Sapevi che un database non ottimizzato e pieno di dati obsoleti può rallentare il tuo sito WordPress? Man mano che un sito cresce, nel database si accumulano sempre più dati, la maggior parte di queste informazioni è essenziale ad esempio i contenuti di pagine e post o le impostazioni dei plugin attivi, parte di questi dati, invece, è superflua e va solo ad aumentare le dimensioni del database, rallentare le richieste e di conseguenza allungare i tempi di caricamento.
In questa guida vedremo come fare a effettuare una pulizia profonda del database alleggerendolo di tutto il superfluo. Vedremo come fare a ottimizzarlo sia con un metodo manuale che con un plugin.
Iniziamo!
Indice
Com’è strutturato il database di WordPress
I CMS come WordPress funzionano grazie a due componenti che lavorano in sinergia: da un lato abbiamo i file del sito cioè quei file che permettono a WordPress, ai plugin e ai temi di funzionare; dall’altro abbiamo il database che contiene il contenuto ad esempio di pagine, post e commenti, ma anche le relazioni tra i diversi contenuti.
Nel database di WordPress troviamo i dati organizzati in tabelle, ad esempio la tabella wp_posts contiene tutte le informazioni sui post (intesi come pagine, articoli e custom post type). Mentre la tabella wp_postmeta contiene dati aggiuntivi sui post, ad esempio se un sito utilizza WooCommerce, in questa tabella troveremo i campi aggiuntivi dei prodotti come le variazioni o gli attributi.
Le informazioni sugli utenti, invece, vengono memorizzate nelle tabelle wp_user e wp_usermeta, così come i commenti sono conservati in wp_comments e wp_commentmeta.
Oltre a queste 6 tabelle di base, ci sono poi le tabelle che contengono le informazioni sulla tassonomia e sulle impostazioni di WordPress, per arrivare a 12 tabelle predefinite. Ma non è tutto, perché ci sono poi tutta una serie di tabelle che vengono create dai temi e dai plugin che installiamo sul nostro sito.
Suggerimento: per approfondire, puoi leggere la nostra guida su come è strutturato il database di WordPress e come gestirlo.
Perché ottimizzare il database di un sito WordPress
Il database di un sito è l’elemento centrale, la banca dati che contiene tutte le informazioni come ad esempio i contenuti veri e propri delle pagine, ma anche le relazioni tra le post, tassonomie e commenti, i meta dati e le impostazioni di plugin e temi.
Come è facile immaginare, con il passare del tempo, questi dati crescono a dismisura. Non è tanto la quantità di dati ad essere importante, quanto il fatto che si vanno ad accumulare informazioni non necessarie che possono far crescere le dimensioni del database.
Tra gli esempi più rilevanti ci possono essere migliaia di commenti di spam e intere tabelle create da plugin che non sono più in uso.
Andando a sfoltire le dimensioni del database attraverso operazioni di pulizia e ottimizzazione, si possono migliorare le prestazioni generali del sito web e contribuire a rendere il sito più veloce con vantaggi sia per l’esperienza dei visitatori che in termini di posizionamento, visto che la velocità di un sito è importante come fattore di ranking.
Infatti, un database di dimensioni più ridotte rende più rapido il recupero delle informazioni. Inoltre un database più snello ha un carico inferiore sul server e quindi permette di adottare soluzioni di hosting più convenienti o di sostenere più traffico a parità di risorse.
Cosa sapere prima di iniziare l’ottimizzazione
Lo scopo di questa guida è darti informazioni utili per ridurre le dimensioni del database e migliorare le prestazioni del sito. Devi sapere, però, che il database è fondamentale per il funzionamento del sito e che quindi eliminare dati importanti può far smettere di funzionare il sito.
Per questo la prima cosa da fare prima di mettere mano al database, è sempre effettuare un backup di WordPress assicurandoti di sapere come fare a ripristinarlo se ce ne fosse bisogno.
In questa fase preliminare può anche essere utile fare una prima pre-pulizia andando a verificare se ci sono temi e plugin inutilizzati ed eliminandoli. Un’operazione, questa, che consigliamo di fare in modo preliminare anche per poter poi migliorare la velocità di un sito WordPress.
Appena avrai un backup recente e funzionante, potrai scegliere qual è il metodo che vuoi seguire per ottimizzare il database. Da qui in avanti andremo a vedere due approcci diversi:
- ottimizzare manualmente il database, cioè andare a eliminare i dati superflui tramite phpMyAdmin;
- usare un plugin.
Entrambi i sistemi hanno i loro pro e contro, l’ottimizzazione manuale ti può dare un maggiore controllo, ma non è l’ideale se non hai un minimo di dimestichezza con le query SQL. Dall’altra parte usare un plugin è l’opzione più immediata e adatta a qualsiasi tipologia di utente.
Ricorda, però, che in tutti e due i casi potresti imbatterti in errore, ed è per questo che ancora una volta ti ricordiamo di metterti al sicuro con un backup. Se effettui la pulizia del database in più passaggi puoi anche fare un backup tra un passaggio e l’altro.
Come ottimizzare il database manualmente con phpMyAdmin
In questa sezione affronteremo l’ottimizzazione manuale e andremo perciò a vedere come eliminare i dati superflui con delle query SQL direttamente da phpMyAdmin.
Per procedere:
- verifica di avere accesso a phpMyAdmin, se hai un hosting con SupportHost, come un piano hosting WordPress, ti basta accederci da cPanel;
- se hai più database, controlla qual è quello corretto andando a recuperare il nome del database dal file wp-config.php.
Alternativa: puoi vedere il nome del database anche dallo strumento Salute del sito dalla bacheca di WordPress. Vai sulla tab Informazioni e poi espandi la voce “Database”.
Prima di andare a fare pulizia dei dati, possiamo fare un’ottimizzazione delle tabelle dallo strumento integrato in phpMyAdmin.
- Accedi a phpMyAdmin e seleziona il database dalla lista di sinistra.
- Scorri fino alla fine della pagina della scheda “Struttura” e clicca su “Seleziona tutto” per selezionare tutte le tabelle.
- Dal menu a tendina seleziona “Ottimizza tabella“.
Passo preliminare: come eseguire le query
Eseguire le query da phpMyAdmin è abbastanza immediato e si può far subito dopo aver selezionato il database dall’elenco sulla sinistra.
- Clicca sulla scheda “SQL”.
- Digita o incolla la query.
- Premi “Esegui”.
Per poter eseguire le query SQL da phpMyAdmin, però, devi prima modificare le query che vedrai negli esempi qui sotto, in modo da usare il prefisso delle tabelle corretto usato dalla tua installazione di WordPress.
Il nome delle tabelle in genere è come questo wpoj_posts e si compone di due parti:
- wp[xx]_ è il prefisso variabile, ad esempio wpoj_, wpad_ o wpbc_.
- la seconda parte del nome è di default, ad esempio posts, options o users.
Puoi vedere qual è il prefisso direttamente da phpMyAdmin: dopo aver selezionato il database del sito, vedrai che tutte le tabelle hanno lo stesso prefisso come ad esempio wpoj_posts, wpoj_postmeta.
Eliminare le revisioni
Su WordPress tutte le modifiche che vengono effettuate sui post, quindi articoli, pagine e custom post type, vengono memorizzate nel database. Questo sistema delle revisioni è utile sia per permetterci un auto salvataggio nel caso in cui ci dimentichiamo di salvare, sia per recuperare una versione precedente dell’articolo a cui stavamo lavorando.
Lo svantaggio, però, è che tutti questi dati vengono salvati nel database e nel tempo possono crescere notevolmente.
Se vogliamo fare una pulizia completa in questo caso possiamo eliminare tutte le revisioni con questa query:
DELETE FROM wp_posts WHERE post_type = 'revision';
Limitare il numero di revisioni
Oltre alla pulizia, per le revisioni possiamo fare anche un passo in più e scegliere di limitare il numero massimo di revisioni da mantenere. Per farlo ci basta aggiungere questa riga nel file wp-config.php modificandola in base al numero di revisioni che vogliamo mantenere per ogni post.
define('WP_POST_REVISIONS', 3);
Se, invece, non ci serve mantenerle, possiamo anche decidere di disattivarle completamente aggiungendo questa riga di codice:
define('WP_POST_REVISIONS', false );
Eliminare i post cestinati
Quando spostiamo un contenuto, ad esempio un articolo, nel cestino, WordPress andrà a eliminarlo automaticamente dopo 30 giorni. Possiamo anche fare una pulizia completa e rapida dei post nel cestino con questa query:
DELETE FROM wp_posts WHERE post_status = 'trash';
Ripulire i commenti
Un’altra sezione del sito WordPress che tende ad accumulare parecchi dati, specie a causa dello spam, è quella dei commenti. Per fortuna possiamo eliminare in blocco i commenti spam, quelli nel cestino, ma anche pingback e trackback.
Per eliminare tutti i commenti contrassegnati come spam, usiamo questa query:
DELETE FROM wp_comments WHERE comment_approved = 'spam';
Invece, per eliminare definitivamente i commenti nel cestino:
DELETE FROM wp_comments WHERE comment_approved = 'trash';
Se abbiamo pingback e trackback attivi, possiamo eliminarli con queste due query:
DELETE FROM wp_comments WHERE comment_type = 'pingback';
DELETE FROM wp_comments WHERE comment_type = 'trackback';
A questo punto puoi valutare anche se disattivare pingback e trackback in modo da non riceverli sui prossimi articoli che pubblicherai, visto che la disattivazione non è retroattiva. Dalla bacheca di WordPress vai su Impostazioni > Discussione e togli la spunta vicino all’opzione “Permetti i link di notifica da altri blog (pingback e trackback) per i nuovi articoli”, poi scorri in fondo alla pagina e clicca su “Salva le modifiche”.
Eliminare i tag non utilizzati
Tag e categorie possono essere molto utili per raggruppare tematicamente gli articoli di un blog o vari contenuti, ma in alcuni casi, specie nei siti con molti autori, la situazione può sfuggire di mano. Se col tempo nel tuo sito si sono accumulate decine e decine di tag che però non sono usati in nessun articolo, puoi fare piazza pulita con queste tre query:
DELETE FROM wp_terms WHERE term_id IN (SELECT term_id FROM wp_term_taxonomy WHERE count = 0 );
DELETE FROM wp_term_taxonomy WHERE term_id not IN (SELECT term_id FROM wp_terms);
DELETE FROM wp_term_relationships WHERE term_taxonomy_id not IN (SELECT term_taxonomy_id FROM wp_term_taxonomy);
In questo caso vengono eliminati i tag e anche i meta dati, come le associazioni tra tag e post.
Eliminare i meta dati orfani
Dopo aver fatto pulizia di revisioni e post cestinati, posso restare dei meta dati orfani corrispondenti a post che sono stati eliminati. Per eliminare questi meta dati ormai orfani che sono rimasti nella tabella wp_postmeta, possiamo usare questa query:
DELETE FROM wp_postmeta WHERE post_id NOT IN (SELECT ID FROM wp_posts);
Per eliminare i meta dati conservati nella tabella wp_commentmeta e relativi ai commenti eliminati, usiamo questa:
DELETE FROM wp_commentmeta WHERE comment_id NOT IN ( SELECT comment_id FROM wp_comments );
Eliminare i dati temporanei (transient)
WordPress memorizza temporaneamente alcuni dati nel database per poi eliminarli in automatico. Questi dati vengono chiamati transient e sono utilizzati spesso da plugin e temi. In alcuni casi questi dati possono restare nel database e per eliminarli possiamo usare questa query:
DELETE FROM wp_options WHERE option_name LIKE '%transient%';
Ripulire tabelle lasciate da plugin e temi
La fase più lunga dell’ottimizzazione del database quando scegliamo di procedere con un approccio manuale è quella di individuare le tabelle create da plugin e temi che non stiamo più usando.
Se ricordi, all’inizio della guida ti abbiamo suggerito di fare un controllo iniziale tra i plugin in modo da capire quali possono essere eliminati. Ecco, a volte nonostante la disattivazione o l’eliminazione dei plugin, i dati possono restare comunque nel database.
Nota: in alcuni casi la scelta di mantenere i dati è voluta, ad esempio pensa di aver installato un plugin per gestire i contatti, in questo caso ha senso non voler perdere i dati dei moduli dopo aver eliminato il plugin. Conviene quindi sempre prima controllare se questi dati effettivamente sono utili.
In questo caso quindi per procedere bisogna capire quali tabelle vengono create dai plugin e quali è possibile eliminare perché legate a plugin che non ci servono più.
Fortunatamente, come inizieremo a vedere dalla prossima sezione, usare un plugin può velocizzarci molto in questa fase aiutandoci a trovare le tabelle create dai vari plugin.
Come ottimizzare il database con un plugin
Ci sono diversi plugin che ci permettono di ottimizzare il database di un sito WordPress senza dover andare a inserire manualmente le query nel database. Il vantaggio di questi plugin è proprio questo: permettere di fare pulizia del database in modo più semplice.
La maggior parte dei plugin sono freemium, cioè hanno delle funzioni gratuite e altre funzioni, come ad esempio la possibilità di programmare la pulizia del database, sono solo disponibili nella versione premium. In questo caso, invece, abbiamo scelto di usare un plugin rilasciato di recente e completamente gratuito: CodingBunny Database Cleaner.
Come usare CodingBunny Database Cleaner
CodingBunny Database Cleaner ci permette di fare pulizia del database in modo efficace.
Possiamo usarlo per:
- Ripulire tutto il superfluo: revisioni dei post, articoli cancellati, commenti spam o orfani, meta dati orfani legati a contenuti cancellati e dati transient scaduti o inutili.
- Individuare ed eliminare i dati appartenenti a plugin e temi che non vengono più usati.
- Fare una pulizia rapida anche su siti WordPress multisite agendo sia a livello dell’intero network (su tutti i siti) che sui singoli siti.
Tieni presente che una volta eliminati i dati con il plugin, non potrai ripristinarli direttamente dal plugin, motivo per cui ancora una volta invitiamo a fare un backup prima di iniziare con la pulizia del database.
Per prima cosa per usare il plugin dobbiamo installarlo e attivarlo come di consueto.
Andiamo su WordPress, Plugin > Aggiungi plugin e cerchiamo “CodingBunny Database Cleaner”, poi installiamolo e attiviamolo.
Vedremo quindi una nuova voce, DB Cleaner, nel menu laterale di WordPress.
Per prima cosa il plugin ci mostra una panoramica delle dimensioni del database e degli elementi che suggerisce di eliminare insieme allo spazio che possiamo recuperare effettuando la pulizia.
Il plugin ci dà diverse opzioni. Possiamo eseguire una pulizia completa del database cliccando sul pulsante “Full Database Cleanup“, in questo caso il plugin andrà ad eliminare tutti i dati che ha rilevato come non utilizzati, tra cui tabelle e opzioni non utilizzati, meta dati orfani, revisioni e commenti spam e cancellati.
In alternativa possiamo andare a eliminare in modo granulare solo quello che ci interessa. Il plugin, infatti, suddivide gli elementi in categorie in modo da rendere più rapida la pulizia.
In particolare abbiamo:
- Tables, mostra tutte le tabelle del database indicando dimensione e origine cioè ad esempio se si tratta di informazioni legate al core o a un plugin specifico.
- Options, qui possiamo trovare le voci relative alle opzioni di plugin, temi e del core.
- Posts, qui sono elencati i post pubblicati, gli allegati, le revisioni, le bozze e i post cestinati.
- Post meta, i meta dati associati ai post, ad esempio tag, campi custom come keyword, meta descrizione aggiunti da plugin SEO, e così via.
- Comments, in questa sezione abbiamo i commenti filtrabili in base allo stato. Da qui possiamo anche individuare pingback e trackback.
- Comment meta, qui troviamo i meta dati associati ai commenti, se presenti.
- User meta, i meta dati degli utenti registrati al sito.
- Term meta, i meta dati associati alla tassonomia.
- Term Relationships, i dati associati alla tassonomia, come tag e categorie.
- Post types, tutte le informazioni sui post di default e su custom post type.
- Transient, i dati transitori generati da WordPress, il plugin ci permette di eliminare rapidamente i transient non usati e/o quelli scaduti.
- Cron jobs, da qui possiamo eliminare i cron job non più in uso.
- Action scheduler e action scheduler log ci permettono di fare pulizia delle azioni completate, fallite o eliminate.
- oEmbed cache, per vedere i dati generati da i contenuti incorporati nel sito, come ad esempio i video di YouTube o i post di X.
Per ogni categoria abbiamo la possibilità di eliminare singolarmente o in blocco i dati superflui. Ad esempio se andiamo su Posts possiamo eliminare in blocco tutte le revisioni, le bozze automatiche o i post cestinati agendo sui relativi pulsanti oppure andare ad eliminare ad esempio singole revisioni, come ho evidenziato qui.
Inoltre, se noti errori nel modo in cui l’origine dei dati viene rilevata, ad esempio se una tabella viene attribuita al plugin errato o se conosci il plugin specifico che non viene riconosciuto e viene indicato come “Unknown“, puoi inviare una correzione andando su DB Cleaner > Report Match e compilando il modulo.
Come impostare la pulizia automatica del database
Il plugin CodingBunny Database Cleaner ci permette anche di impostare degli intervalli di tempo per eliminare automaticamente determinati contenuti. Ad esempio potremmo impostare la cancellazione automatica delle revisioni dei post su base mensile.
Per farlo basta aprire la categoria che ci interessa e impostare l’intervallo dagli appositi menu a tendina. Per esempio nel caso delle revisioni, clicchiamo su Posts e poi dal menu in alto impostiamo “Auto Clean Revisions” da OFF a Monthly.
Nota: è importante ricordare che se impostiamo la cancellazione automatica, non ci verrà richiesta ogni volta la conferma, quindi per maggiore sicurezza è bene usare la funzione di pulizia automatica solo se abbiamo anche una soluzione di backup automatizzata in modo da poter recuperare eventuali dati persi per errore.
Conclusioni
Con una pulizia periodica del database possiamo assicurarci che i siti WordPress siano più reattivi, avere un impatto più basso sulle risorse del server e quindi miglioramenti nelle prestazioni. Inoltre ridurre le dimensioni del database è anche un vantaggio per risparmiare spazio sul disco e avere backup più leggeri.
In questa guida abbiamo visto nel dettaglio come fare un’ottimizzazione del database andando ad eliminare selettivamente ciò che non serve. Questa operazione può essere eseguita direttamente con delle query SQL o in modo più semplice utilizzando un plugin.
Hai seguito la guida per ottimizzare il tuo database? Quale metodo hai scelto e come è andata? Faccelo sapere nei commenti.
Pronto a costruire il tuo sito WordPress?
Prova il nostro servizio gratuitamente per 14 giorni. Nessun impegno, nessuna carta di credito richiesta.