Velocizza il tuo sito Web con MySQL Query Caching

Velocizza il tuo sito Web con MySQL Query Caching
Velocizza il tuo sito Web con MySQL Query Caching

Video: Velocizza il tuo sito Web con MySQL Query Caching

Video: Velocizza il tuo sito Web con MySQL Query Caching
Video: Come risolvere i problemi su Mac con il reset della NVRAM, PRAM e SMC - YouTube 2024, Aprile
Anonim

Uno dei modi migliori per accelerare la tua applicazione web consiste nell'abilitare il caching delle query nel tuo database, che memorizza nella cache le query SQL comunemente utilizzate in memoria per l'accesso praticamente istantaneo dalla pagina successiva che effettua la stessa richiesta.

Il motivo per cui questo metodo è così potente è che non devi apportare alcuna modifica alla tua applicazione web, devi solo sacrificare un po 'di memoria. Questo non risolverà tutti i tuoi problemi, ma sicuramente non può far male.

Nota: se l'applicazione aggiorna le tabelle frequentemente, la cache delle query verrà costantemente eliminata e non ne trarrai alcun vantaggio. Questo è l'ideale per un'applicazione che si rivolge principalmente al database, come ad esempio un blog WordPress. Anche questo non funzionerà se si esegue l'hosting condiviso.

Abilita memorizzazione nella cache con server in esecuzione

La prima cosa che vorrai fare è assicurarti che l'installazione di MySQL abbia effettivamente a disposizione il supporto per il caching delle query. La maggior parte delle distribuzioni lo fa, ma dovresti comunque controllare.

Dovrai eseguire questo comando dalla tua console MySQL, che ti dirà se il caching delle query è disponibile.

mysql> show variables like 'have_query_cache'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | have_query_cache | YES | +------------------+-------+

Non confonderlo nel senso che il caching delle query è effettivamente abilitato, perché la maggior parte dei provider di hosting non abiliteranno questa impostazione per impostazione predefinita. Stranamente, la mia installazione di Ubuntu Feisty l'aveva già abilitata …

Successivamente avremo bisogno di controllare e vedere se il caching delle query è abilitato. Dovremo controllare più di una variabile, quindi possiamo anche fare tutto in una volta controllando la query variabile%

mysql> show variables like 'query%'; +------------------------------+---------+ | Variable_name | Value | +------------------------------+---------+ | query_alloc_block_size | 8192 | | query_cache_limit | 1048576 | | query_cache_min_res_unit | 4096 | | query_cache_size | 8388608 | | query_cache_type | ON | | query_cache_wlock_invalidate | OFF | | query_prealloc_size | 8192 | +------------------------------+---------+

Ecco gli elementi importanti nella lista e cosa significano:

  • query_cache_size - Questa è la dimensione della cache in byte. L'impostazione di questo valore su 0 disabiliterà efficacemente la memorizzazione nella cache.
  • query_cache_type - Questo valore deve essere ON o 1 per il caching delle query da abilitare per impostazione predefinita.
  • query_cache_limit - Questa è la query di dimensione massima (in byte) che verrà memorizzata nella cache.

Se il valore query_cache_size è impostato su 0 o si desidera solo modificarlo, è necessario eseguire il seguente comando, tenendo presente che il valore è in byte. Ad esempio, se si desidera allocare 8 MB nella cache, utilizzeremmo il valore 1024 * 1024 * 8 = 8388608.

SET GLOBAL query_cache_size = 8388608;

Allo stesso modo, le altre opzioni possono essere impostate con la stessa sintassi:

SET GLOBAL query_cache_limit = 1048576;

SET GLOBAL

query_cache_type

= 1;

Ora, come possiamo dire se funziona davvero? Puoi usare il comando SHOW STATUS per tirare tutte le variabili che iniziano con "Qc" per dare un'occhiata a cosa sta succedendo sotto il cofano.

mysql> SHOW STATUS LIKE 'Qc%'; +-------------------------+--------+ | Variable_name | Value | +-------------------------+--------+ | Qcache_free_blocks | 65 | | Qcache_free_memory | 201440 | | Qcache_hits | 18868 | | Qcache_inserts | 2940 | | Qcache_lowmem_prunes | 665 | | Qcache_not_cached | 246 | | Qcache_queries_in_cache | 492 | | Qcache_total_blocks | 1430 | +-------------------------+--------+ 8 rows in set (0.00 sec)

Noterai nelle statistiche che ho ancora un sacco di memoria libera. Se il tuo server mostra un sacco di prugne lowmem, potresti dover prendere in considerazione l'aumento di questo valore, ma non spendere troppa memoria sul caching delle query per un server web … devi lasciare la memoria disponibile per apache, php, ruby o qualunque cosa tu stia usando.

Abilita nel file di configurazione

Se vuoi che queste modifiche sopravvivano al riavvio o al riavvio del server mysql, dovrai aggiungerle nel tuo file di configurazione /etc/mysql/my.cnf per MySQL. Si noti che potrebbe trovarsi in una posizione diversa sull'installazione.

Apri il file usando un editor di testo in sudo o in modalità root, quindi aggiungi questi valori se non esistono già nel file. Se esistono, basta decommentarli.

query_cache_size = 268435456 query_cache_type=1 query_cache_limit=1048576

Il caching delle query può migliorare significativamente la velocità della tua applicazione web, specialmente se la tua applicazione legge principalmente. Monitora lo stato utilizzando i metodi sopra riportati e osserva come funziona nel tempo.

Consigliato: