Ottimizzare il database di WordPress

Ottimizzare il database di WordPress

Il database di WordPress è probabilmente la parte più importante del tuo blog. Qui vengono salvate tutte le informazioni come le impostazioni di WP e dei plugin, i tag, le categorie, gli indirizzi delle immagini, i commenti, ma soprattutto le pagine e gli articoli!

Ogni volta che un utente visita una pagina, WordPress interroga il database per farsi fornire le informazioni desiderate. Quindi più il database è in ordine e meno informazioni sono custodite al suo interno, migliore sarà la velocità con cui WordPress riceverà tutti i dati e migliore sarà anche il tempo di caricamento della pagina. Proprio questo fattore è valutato con attenzione dai motori di ricerca per decidere il posizionamento del blog nelle SERP (risultati delle ricerche).

Più sei veloce, migliore sarà la tua posizione.

Ecco perchè è importante ottimizzare il database, riducendo al massimo le informazioni utili ed eliminando quelle non più necessarie. L’ottimizzazione porta sempre ad avere un miglioramento (altrimenti che ottimizzazione sarebbe :)), ovviamente maggiormente percepibile in blog con molti articoli.

Come ottimizzare il database in WordPress

Si potrebbe procedere andando a lavorare sul database a mano, ma perchè non usare semplicemente i favolosi plugin?

WP-DBmanager

Scarica ed attiva il plugin WP-DBmanager, comparirà l’avviso (warning) che indica che la cartella dei backup può essere visibile a tutti:

Warning DBManager

Per impedirne l’accesso, dovrai accedere al blog via FTP e spostare il file wp-content/plugins/wp-dbmanager/htaccess.txt nella cartella wp-content/backup-db/ e successivamente dovrai rinominarlo in .htaccess , ottenendo wp-content/backup-db/.htaccess .

Backup

Prima di cominciare a fare qualsiasi cosa, crea un backup del database, eviterai di maledirti per tutto il resto della vita 🙂

Vai su Database > Backup > e premi il pulsante Backup. La copia di sicurezza del tuo database verrà creata e salvata sul server nel giro di pochi secondi.

Ora puoi cominciare a fare sul serio 🙂

Limita le Revisioni

Ogni volta che si salva/aggiorna un articolo WordPress crea una revisione, una copia di backup dell’articolo. Quindi se aggiorni 20 volte l’articolo, verranno aggiunte 20 nuove righe (che contengono le informazioni) all’interno del database… Che spreco di spazio!

Limita il numero di revisioni (ma non eliminarle del tutto, mi hanno salvato la vita in più e più occasioni) aggiungendo questo codice nel file wp-config.php:

[php]
define( ‘WP_POST_REVISIONS’, 3);
[/php]

Dove al posto di 3 puoi mettere il numero di revisioni che vuoi mantenere… quelle nuove sovrascriveranno quelle precedenti.

Eliminare commenti Spam, In sospeso e Cestinati

Anche i commenti Spam, In sospeso (ma che non vuoi approvare) e Cestinati occupano spazio inutilmente. Vai su Commenti > Spam (oppure In sospeso oppure Cestinati) > ed eliminali. Nel caso dei commenti Spam, premi il pulsante Svuotare lo spam.

svuotare lo spam

Elimina la tabelle vuote o che non ti servono più

Questo passaggio è più un discorso di pulizia che di performance. Puoi eliminare le tabelle che sono rimaste anche dopo aver eliminato un plugin e che sicuramente non userai più.

Vai su Database > Database >, vedrai il numero di tabelle presenti nel tuo DB e quanti Records (le righe, ovvero le informazioni) hanno. Solitamente le tabelle con zero records sono da eliminare perchè non le stai utilizzando, ma non è sempre così.

Se non sai cosa stai facendo o se non sai a quale plugin sia associata la tabella, non eliminarla.

Altrimenti vai su Database > Empty/Drop Tables > e seleziona nella colonna Drop le tabelle che vuoi eliminare, dopodichè premi il pulsante Empty/Drop.

Ripara

All’interno del DB ci potrebbero essere delle tabelle corrotte. Per sicurezza, ripara tutte le tabelle (se non sono corrotte non succederà niente), vai su Database > Repair DB >, assicurati che tutte le tabelle siano su Yes e poi premi il pulsante Repair.

Ottimizza

Il tocco finale… ottimizzare le tabelle. Ancora una volta la procedura è davvero semplice. Vai su Database > Optimize DB >, assicurati che tutte le tabelle siano su Yes e poi premi il pulsante Optimize.

Ti consiglio di programmare l’ottimizzazione ogni 3-7 giorni (a seconda di quanto utilizzi il blog) e la riparazione delle tabelle ogni due settimane, da Database >DB Options > Automatic Scheduling.

Ecco i miei risultati

Sono partito con 42 tabelle, 69.922 records, dimensione dei dati pari a 34.8 MiB, 5.2 per l’index e 15.3 di overhead (spazio temporaneo che il DB utilizza per eseguire delle query).

prima dell'ottimizzazione

Dopo l’ottimizzazione ho ottenuto 33 tabelle, 59.526 records, dimensione dei dati pari a 21 MiB, 4 per l’index e 0 di overhead.dopo-ottimizzazione

Ecco il confronto:risultato-finale-ottimizzazione

La dimensione complessiva del DB si è ridotta del 55%!

Il tempo di caricamento della homepage e degli articoli misurato con pingdom è rimasto quasi invariato (è difficile calcolarlo con questo strumento perchè fornisce risultati variabili ad ogni test).

Perciò ho utilizzato il seguente codice (inserito alla fine del footer.php) per rilevare il numero di query effettuate ed il tempo impiegato:

[php]
<!– <?php echo get_num_queries(); ?> queries in <?php timer_stop(1); ?> seconds. –>
[/php]

Questo è il risultato finale:

Risultato finali in tempo e query

Interessante? Sì.

Ho avuto un miglioramento medio di 0.187 secondi, pari al 18%. Se consideri che una pagina potrebbe caricarsi in 3 secondi, allora prima le query avevano un impatto del 34.8% sul tempo di caricamento, ora del 28.6%, con un guadagno ipotetico del 6.2% (ma che non ho riscontrato con pingdom).

Cache

Per concludere, perchè non fare un po’ di cache anche per il database, ovvero salvare i risultati di query frequenti così da non dover interrogare ogni volta il database, velocizzando il tutto.

Per farlo, ho utilizzato il plugin db cache reloaded.

Il risultato mostra che su 44 query (rilevate dal plugin) che venivano effettuate prima, solo 16 sono dirette al DB mentre ben 28 vengono fatte nella cache. Il tempo è sempre lo stesso, ma il Database risulta molto meno stressato, quindi più performante su blog molto visitati.

Risultati con la cache

Il mio consiglio è di utilizzare il plugin W3 Total Cache, che comprende anche la cache del Database (funziona molto bene anche per l’intero blog!), al posto del plugin db cache reloaded che ho utilizzato solamente per effettuare i test.

Sponsor

Vhosting
themeforest