Come ottimizzare il database WordPress per velocizzare il sito
Con il tempo, il database di WordPress accumula dati inutili: revisioni di articoli, commenti spam, transient scaduti, meta orfani e tabelle frammentate. Tutto questo rallenta le query e appesantisce il caricamento delle pagine. Ottimizzare il database è una delle operazioni di manutenzione più efficaci per velocizzare un sito WordPress. In questa guida ti spiego come farlo in modo sicuro.
Cosa appesantisce il database WordPress
Un database WordPress appena installato pesa pochi megabyte, ma dopo mesi o anni di utilizzo può crescere enormemente. Le principali cause di crescita sono:
- Revisioni degli articoli: WordPress salva automaticamente ogni modifica come revisione. Un articolo modificato 50 volte ha 50 revisioni nel database, ciascuna con i suoi metadati.
- Bozze automatiche: ogni 60 secondi WordPress salva una bozza automatica del contenuto che stai editando.
- Commenti spam e cestinati: anche dopo essere stati segnalati come spam, i commenti restano nel database finché non li elimini definitivamente.
- Transient scaduti: i plugin salvano dati temporanei nella tabella wp_options che spesso non vengono puliti dopo la scadenza.
- Meta orfani: quando elimini un articolo, i metadati associati possono restare nel database senza essere collegati a nulla.
- Tabelle di plugin disinstallati: molti plugin creano tabelle personalizzate che restano nel database anche dopo la disinstallazione.
Limitare le revisioni degli articoli
Le revisioni sono la causa principale di database gonfiati. Un sito con 500 articoli e una media di 20 revisioni ciascuno ha 10.000 righe solo per le revisioni. Puoi limitare il numero di revisioni aggiungendo questa riga a wp-config.php:
define('WP_POST_REVISIONS', 5);
Questo mantiene solo le ultime 5 revisioni per ogni articolo. Se vuoi disabilitare completamente le revisioni (sconsigliato, perché sono utili come backup), usa il valore false. Per eliminare le revisioni già esistenti, puoi usare una query SQL in phpMyAdmin:
DELETE FROM wp_posts WHERE post_type = 'revision';
Dopo aver eliminato le revisioni, elimina anche i metadati orfani associati con:
DELETE FROM wp_postmeta WHERE post_id NOT IN (SELECT ID FROM wp_posts);
Pulire la tabella wp_options
La tabella wp_options è una delle più consultate da WordPress e una delle più soggette a crescita incontrollata. I transient sono dati temporanei che i plugin salvano in questa tabella. Molti plugin non puliscono i transient scaduti, che si accumulano nel tempo. Per eliminarli:
DELETE FROM wp_options WHERE option_name LIKE '_transient_%'; DELETE FROM wp_options WHERE option_name LIKE '_site_transient_%';
Un’altra causa di crescita della tabella wp_options sono le opzioni lasciate da plugin disinstallati. Per identificarle, ordina la tabella per dimensione del campo option_value in phpMyAdmin e cerca valori anomalamente grandi che appartengono a plugin non più attivi.
Ottimizzare con il plugin WP-Optimize
WP-Optimize è il plugin più completo per la pulizia del database WordPress. Con un clic puoi eliminare revisioni, bozze automatiche, commenti spam, transient scaduti e ottimizzare le tabelle. Il plugin offre anche la programmazione della pulizia automatica: puoi impostare una pulizia settimanale che mantiene il database snello senza intervento manuale.
Dopo l’installazione, vai su WP-Optimize > Database e vedrai un elenco di tutte le operazioni disponibili con il numero di elementi che verranno eliminati. Seleziona le operazioni desiderate e clicca su “Esegui tutte le ottimizzazioni selezionate”. Per la prima pulizia su un sito mai ottimizzato, è consigliabile fare un backup del database prima di procedere.
Ottimizzare le tabelle del database
Dopo aver eliminato molte righe, le tabelle MySQL restano frammentate: lo spazio liberato non viene restituito automaticamente. L’operazione di OPTIMIZE TABLE ricompatta le tabelle e recupera lo spazio su disco. Puoi farlo da phpMyAdmin selezionando tutte le tabelle e scegliendo “Ottimizza tabella” dal menu a tendina, oppure via WP-CLI:
wp db optimize
Questa operazione può ridurre significativamente la dimensione del database e migliorare la velocità delle query, specialmente su database che non sono mai stati ottimizzati.
Aggiungere indici mancanti
Gli indici del database accelerano le query permettendo a MySQL di trovare i dati senza scansionare l’intera tabella. WordPress crea gli indici necessari durante l’installazione, ma alcuni plugin aggiungono colonne senza creare indici appropriati. Se noti query lente nel log di MySQL o con il plugin Query Monitor, verifica che le colonne usate nelle clausole WHERE abbiano un indice.
Un indice particolarmente utile che WordPress non crea di default è sulla colonna autoload della tabella wp_options:
ALTER TABLE wp_options ADD INDEX autoload_idx (autoload);
Questo indice velocizza il caricamento delle opzioni autoload, che WordPress carica ad ogni richiesta. Su siti con una tabella wp_options grande, il miglioramento può essere significativo.
Manutenzione regolare del database
L’ottimizzazione del database non è un’operazione una tantum: va ripetuta regolarmente. Programma una pulizia mensile con WP-Optimize o un cron job personalizzato. Monitora la dimensione del database nel tempo: se cresce rapidamente, indaga quale plugin o funzionalità sta generando dati. Un database ben mantenuto è la base per un sito WordPress veloce e reattivo.
Serve aiuto con le prestazioni?
Se il tuo sito WordPress è lento e vuoi un’ottimizzazione completa del database e delle prestazioni, il team di SoccorsoWP può analizzare e ottimizzare il tuo sito. Apri un ticket e dai nuova vita al tuo database WordPress.