Accelerare il tuo sito Web con MySQL Query Caching
Uno dei modi migliori per velocizzare 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 un 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 disponibile il supporto per la cache di 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> mostra variabili come 'have_query_cache'; + ------------------ + ------- + | Variable_name | Valore | + ------------------ + ------- + | has_query_cache | SÌ | +------------------+-------+
Non confonderlo nel senso che il caching delle query è effettivamente abilitato, poiché la maggior parte dei provider di hosting non abiliterà 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> mostra variabili come 'query%'; + ------------------------------ + --------- + | Variable_name | Valore | + ------------------------------ + --------- + | 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 - Per impostazione predefinita, questo valore deve essere ON o 1 per la memorizzazione nella cache delle query.
- 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 1024 * 1024 * 8 = 8388608 come valore.
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 GLOBALquery_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 la cappa.
mysql> MOSTRA STATO COME 'Qc%'; + ------------------------- + -------- + | Variable_name | Valore | + ------------------------- + -------- + | 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 righe in set (0,00 secondi)
Noterai nelle statistiche che ho ancora un sacco di memoria libera. Se il tuo server mostra un sacco di prugne lowmem, potresti dover considerare di aumentare 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 in modo significativo 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.