Ottimizzare MySQL per WordPress

WordPress richiede la presenza di MySQL per il funzionamento, gli articoli e le impostazioni vengono infatti salvate all’interno di un database.
Questo significa che, quando vengono visualizzate delle pagine, vengono eseguiti numerosi accessi al database, risulta quindi importante ottimizzare MySQL per WordPress.

In questo articolo vediamo quali sono i principali parametri da modificare all’interno del file di configurazione di MySQL, My.cnf.

nano /etc/mysql/my.cnf

Una delle prime impostazioni riguarda la disabilitazione del supporto per InnoDB, si tratta infatti di un’impostazione attiva di default che non è necessaria per WordPress e che ha come conseguenza l’utilizzo elevato di memoria.
Per disabilitare il supporto InnoDB è necessario inserire la seguente riga.
skip-innodb

Vediamo ora gli altri parametri.
query_cache_size – La funzionalità query cache permette a MySQL di salvare in cache i risultati delle query. Questo permette di velocizzare le operazioni quando vengono eseguite spesso le stesse query sugli stessi dati.
Se Apache e MySQL sono in esecuzione sullo stesso server, è possibile trovare il valore da assegnare al parametro dividendo i mb di memoria per 16.
Nel caso Apache sia installato su un altro server, è possibile aumentare il valore.
key_buffer_size – Specifica la dimensione del buffer utilizzato con gli indici. Un buffer più grande ha come conseguenza una maggiore velocità nell’esecuzione dei comandi SQL.
Il valore dovrebbe essere grande abbastanza per contenere tutti gli indici, generalmente non deve essere inferiore a un quarto della memoria e non superiore alla metà.
table_cache – Controlla il numero di tabelle aperte per tutti i thread. Ogni volta che MySQL accede a una tabella, la mette in cache.
Se il sistema deve accedere a molte tabelle, averle in cache velocizza le operazioni.
Per determinare il valore da assegnare al parametro bisogna verificare il valore di open_tables nei momenti di maggiore traffico eseguendo SHOW STATUS.
Il valore di open_tables dovrebbe essere inferiore a quello assegnato a table_cache.
thread_cache – Nel caso si abbia un server che riceve molte connessioni, può essere utile impostare questo valore  in modo che il valore di Threads_created, visualizzato eseguendo il comando SHOW STATUS, smetta di crescere.
sort_buffer_size – Specifica la dimensione del buffer per le clausole ORDER BY e GROUP BY. Aumentando il valore è possibile velocizzare queste query.

Un modo per semplificare la configurazione di MySQL consiste nell’utilizzare MySQLTuner, uno script in perl che verifica le prestazioni del server e in base a queste sufferisce le modifiche da effettuare alla configurazione.
wget http://mysqltuner.com/mysqltuner.pl
chmod +x mysqltuner.pl
./mysqltuner.pl