Sebbene tutti i componenti di un sito web WordPress siano importanti, il database è probabilmente fondamentale. È qui che vengono archiviate e consultate praticamente tutte le informazioni del tuo sito. Per questo motivo, l’ottimizzazione del database di WordPress deve essere perfetta.
Un database che soffre di problemi di “gonfiore” e di prestazioni rallenta il sito e danneggia il posizionamento nelle classifiche di ricerca. Inoltre, potrebbe compromettere l’esperienza utente complessiva (UX). A sua volta, questo può avere un impatto sui dati di traffico e influire sulla posizione nei risultati di ricerca (oltre ad altri problemi).
In questo tutorial analizzeremo l’ottimizzazione del database di WordPress da diversi punti di vista. Parleremo della struttura generale che vedrai, insieme a molte tecniche di ottimizzazione da utilizzare. Parleremo anche di strumenti e servizi che possono aiutarti a mantenere i database efficienti.
La struttura del database di WordPress
In breve, il database di WordPress è la spina dorsale di un sito web. Ospita quasi tutto, come i contenuti, i dati degli utenti, le impostazioni e molto altro ancora. Per quanto riguarda WordPress, le “tabelle” del database sono responsabili dell’archiviazione di specifici tipi di informazioni.
La piattaforma utilizza i sistemi di gestione dei database MySQL o MariaDB e potrai accedervi con strumenti come phpmyAdmin o Adminer:

Ad esempio, la tabella wp_posts contiene i post e le pagine, mentre wp_users contiene i dati relativi agli utenti del sito. Tra poco vedremo nel dettaglio alcune di queste tabelle.
Al momento dell’installazione, WordPress crea una serie di tabelle predefinite per coprire tutti i casi d’uso tipici di cui hai bisogno. Tuttavia, anche i plugin, i temi e le installazioni possono creare tabelle per memorizzare dati specifici e correlati.
Questo approccio modulare è eccellente sotto molti punti di vista, in quanto consente di ottenere ampie funzionalità. D’altro canto, però, un numero eccessivo di tabelle superflue (insieme a una gestione errata) può portare a un eccesso di volume.
Comprendere la struttura del database di WordPress è fondamentale per due motivi:
- Prestazioni. Una buona organizzazione del database permette di recuperare i dati più velocemente, con un impatto diretto sui tempi di caricamento e sulle prestazioni.
- Manutenzione. Sapere quali tabelle corrispondono alle diverse parti del sito ti aiuterà durante la manutenzione. Ad esempio, se un particolare plugin sta causando dei problemi, puoi risolvere le tabelle ad esso associate.
Una regolare pulizia e ottimizzazione delle tabelle del database può evitare che diventino grandi e ingombranti. Come abbiamo notato, l’impatto sulle prestazioni potrebbe essere negativo.
Tabelle specifiche di WordPress
I siti di tutti i tipi utilizzano i database, non solo WordPress. La piattaforma ha i suoi tipi di tabelle di database e i suoi ruoli e, se vuoi ottimizzarli, è importante comprenderli a fondo.
Anche se non le tratteremo tutte in questa sede, ci soffermeremo su alcune tabelle più di altre:
wp_options. Questa tabella contiene le impostazioni dell’intero sito ed è probabilmente una delle tabelle più consultate all’interno del database. Dovrai mantenere questa tabella snella attraverso una buona ottimizzazione.wp_postmeta. Qui risiedono i metadati dei post. Con la crescita del sito, questa può diventare una delle tabelle più grandi del database.wp_usersewp_usermeta. Tutte le informazioni relative agli utenti del sito e ai loro metadati si trovano in queste due tabelle. In alcuni rari casi, potresti dover entrare in queste tabelle per cambiare una password se sei bloccato fuori da WordPress.
Ricorda che ogni plugin o tema aggiuntivo che aggiungi al sito può modificare questa struttura. Tuttavia, è raro che un tema o un plugin elimini una di queste tabelle.
Tuttavia, è bene che tu riveda e comprenda regolarmente questi potenziali cambiamenti. È fondamentale per mantenere un database ottimizzato che supporti, anziché ostacolare, le prestazioni del sito.
Perché l’ottimizzazione del database di WordPress è necessaria per la maggior parte dei siti
L’ottimizzazione del database di WordPress non è solo una buona pratica: è una necessità per la maggior parte dei siti che vogliono offrire un’esperienza senza interruzioni. Il database è l’archivio centrale di tutti i dati importanti di un sito. La sua salute influisce direttamente sulle prestazioni, sulla velocità e sull’affidabilità del sito.
Per questo motivo, ci sono due ragioni generali per cui l’ottimizzazione regolare del database di WordPress dovrebbe essere un punto fermo del flusso di lavoro:
- Miglioramento della velocità e delle prestazioni del sito. Il database WordPress con il tempo includerà alcuni dati inutili o ridondanti, come opzioni transitorie, revisioni di post, commenti di spam o bozze obsolete. Questo ingombro renderà più lento il recupero delle informazioni.
- Miglioramento dell’esperienza utente. Gli utenti si aspettano un’esperienza di navigazione fluida e veloce. Un database ben ottimizzato si traduce in un caricamento più rapido delle pagine e in un’elaborazione più efficiente dei dati. In poche parole, ogni interazione sul sito si basa sulle query del database. Una maggiore efficienza si traduce in una migliore UX.
Ci sono anche ragioni più avanzate per assicurarsi di ottimizzare il database. Ad esempio, un database non ottimizzato sottopone il tuo server a uno stress aggiuntivo, in quanto lavora più duramente per trovare e servire i dati. Questo ha un effetto critico se utilizzi un hosting condiviso con risorse limitate, ed è in parte uno dei motivi per cui Kinsta non offre hosting condiviso.
Inoltre, man mano che il sito cresce, cresce anche il database. Se all’inizio puoi gestire un sistema piccolo e maneggevole, la sua complessità può crescere rapidamente. Con un’ottimizzazione regolare, puoi assicurarti che il tuo database sia in grado di gestire la crescita del sito senza comprometterne le prestazioni.
In breve, l’ottimizzazione del database di WordPress aumenterà i tempi di risposta. Un ritardo di caricamento anche di pochi secondi può portare a un aumento della frequenza di rimbalzo e a una perdita di traffico, il che non è certo una buona notizia per le tue classifiche di ricerca.
Come effettuare la manutenzione e la pulizia regolare
Se pulisci ed esegui una manutenzione regolare del tuo database WordPress, hai uno dei modi migliori per far funzionare il sito nel modo più fluido possibile. Tuttavia, i database possono gonfiarsi di dati inutili nel corso del tempo, quindi è importante stabilire un flusso di lavoro regolare e coerente.
Inoltre, devi utilizzare tutti gli strumenti e i servizi a tua disposizione nel modo migliore. La buona notizia è che WordPress offre una serie di approcci per la manutenzione del database.
Se scegli di utilizzare un plugin, assicurati che soddisfi i requisiti di Kinsta e che non sia presente nella nostra lista di plugin vietati.
Per questa guida utilizzeremo WP-Sweep, un plugin ben valutato e regolarmente aggiornato.

Nel corso del post mostreremo come ottimizzare il database di WordPress utilizzando questo plugin, ma puoi trasporre le istruzioni anche al tuo plugin preferito.
Nelle prossime sezioni vedremo questo aspetto in modo più dettagliato e tratteremo l’approccio manuale e l’utilizzo di WP-Sweep. Più avanti parleremo degli strumenti di Kinsta. Prima, però, vediamo alcune operazioni di pre-ottimizzazione.
Cosa fare prima di affrontare l’ottimizzazione
Prima di dedicarti al database, ci sono alcuni semplici compiti da svolgere. Per cominciare, dovresti sempre fare un backup completo del sito e del database. Se dovesse verificarsi il peggiore degli scenari e dovessi rovinare il tuo sito, potrai ripristinarlo in pochi minuti.
Dovrai anche eliminare tutti i plugin o i temi che non utilizzi sul sito. Questo potrebbe risolvere diversi problemi, non solo per quanto riguarda il database. Può anche contribuire a rafforzare la sicurezza del sito.

Tuttavia, a seconda del plugin o del tema, questo può lasciare dietro di sé tabelle indesiderate. Naturalmente, questo è l’esatto motivo per cui vogliamo ottimizzare il database, quindi capire quali plugin e temi lasciano dati transitori sarà utile in futuro.
L’ultima operazione è quella che troverai quando accederai allo strumento di gestione del database che hai scelto. Gli errori del database possono ovviamente essere un’indicazione di problemi di prestazioni, per cui è necessario risolverli prima di procedere a un’ulteriore ottimizzazione.
In breve, il processo consiste nel selezionare tutte le tabelle e poi utilizzare il pulsante Check table per generare un report.

Se vedi OK o qualcosa di simile, la situazione è ottimale. Tuttavia, qualsiasi errore deve essere risolto prima di proseguire. In questo caso, una richiesta di assistenza potrebbe essere una buona idea.
1. Ottimizzare le tabelle del database
Il primo passo consiste nell’ottimizzare le tabelle del tuo database. Con un approccio manuale, vai al link Database del tuo strumento di gestione e scegli il tuo database:

In molti casi, ti troverai già nel database del tuo sito WordPress. In ogni caso, vedrai un elenco di tabelle all’interno del database. Seleziona semplicemente tutte le tabelle, quindi scegli l’opzione Optimize table dal menu a discesa prima di cliccare su Go:

Dopo un po’ di tempo, vedrai un report che illustra lo stato di ogni tabella del database:

Con WP-Sweep, vai su Tools > Sweep. Da qui, scorri verso il basso fino alla sezione Database Sweep e clicca sul pulsante Sweep accanto all’opzione Optimize Tables:

Il plugin eseguirà tutte le tabelle e restituirà un messaggio di successo. A questo punto, puoi passare alla revisione dei post.
2. Ripulire le revisioni dei post
Il sistema di revisione dei post di WordPress fa sì che ogni modifica apportata possa accumularsi nel tempo. Puoi eliminare queste revisioni dal database con facilità utilizzando le query SQL. Il modo più semplice per farlo è una sola riga:
DELETE FROM wp_posts WHERE post_type = 'revision';
In questo modo verranno eliminati tutti i tipi di post di revisione dalla tabella. Tuttavia, ci sono anche dati associati in altre tabelle. Per catturare e rimuovere tutti questi dati, puoi utilizzare le seguenti istruzioni SQL:
DELETE FROM wp_posts WHERE post_type = 'revision';
DELETE FROM wp_term_relationships WHERE object_id NOT IN (SELECT ID FROM wp_posts);
DELETE FROM wp_postmeta WHERE post_id NOT IN (SELECT ID FROM wp_posts);
Suggerimento: quando si gestiscono tabelle di database con molte righe (in particolare con le unioni più complesse come quelle sopra descritte), le query di lunga durata possono andare in timeout. In MySQL, MariaDB e PostgreSQL, puoi utilizzare una clausola LIMIT per suddividere l’operazione in passi piccoli:
DELETE FROM wp_postmeta
DOVE post_id NOT IN (SELECT ID FROM wp_posts)
LIMIT 10000;
Questo SQL può essere eseguito ripetutamente – eliminando ogni volta fino a 10.000 voci in questo caso – fino a quando la tabella non sarà pulita.
Naturalmente, se copi e incolli questi esempi di SQL, devi utilizzare il prefisso della tabella corretto per il tuo database.
Con un plugin, questa operazione richiede pochi secondi. Come per l’ottimizzazione generale del database di WordPress, WP-Sweep ti offre un pulsante con un solo clic all’interno di WordPress:

In futuro, potrai limitare il numero di revisioni utilizzate da WordPress accedendo al file wp-config.php. Aggiungi la seguente riga al file e salva le modifiche:
define( 'WP_POST_REVISIONS', X );
X è il numero di revisioni che desideri mantenere. Potresti anche specificare false, ma non ti consigliamo di farlo. È sempre meglio avere almeno una revisione a cui ricorrere in caso di necessità.
3. Eliminare i commenti di spam e gli articoli cestinati
Possiamo anche utilizzare le query SQL per rimuovere i commenti di spam. Tieni presente che quando moderi i commenti, quelli indesiderati rimangono nel tuo database per 30 giorni. Ciò significa che i commenti contrassegnati come spam in quel lasso di tempo rimarranno nel tuo database.
Puoi eliminarli completamente con poche righe di SQL nel tuo strumento di gestione del database:
DELETE FROM wp_comments, wp_commentmeta
USING wp_comments
LEFT JOIN wp_commentmeta ON wp_comments.comment_ID = wp_commentmeta.comment_id
WHERE wp_comments.comment_approved = 'spam’;
Il caso è simile a quello degli articoli che invii al cestino di WordPress. Potrebbero esserci molti contenuti “nel limbo”, che puoi eliminare con un’altra query SQL:
DELETE p, pm, tr
FROM wp_posts p
LEFT JOIN wp_postmeta pm ON p.ID = pm.post_id
LEFT JOIN wp_term_relationships tr ON p.ID = tr.object_id
WHERE p.post_status = 'trash';
Come per le revisioni dei post, puoi impostare i valori relativi al tempo necessario per rimuovere gli elementi cestinati all’interno di wp-config.php:
define( 'EMPTY_TRASH_DAYS', X )
All’interno di WP-Sweep, hai la possibilità di rimuovere i commenti di spam:

Esiste anche l’opzione per rimuovere i commenti non approvati. Questa opzione può essere utile in alcune situazioni, ma non la consigliamo. Modera invece questi commenti e poi cancellali se necessario.
4. Rimuovere i tag inutilizzati
Le tassonomie sono importanti per WordPress, ma con il tempo possono diventare una raccolta enorme. Questo è un ottimo caso d’uso per ottimizzare il database e, come per altre tecniche, puoi utilizzare una query SQL:
DELETE t, tt
FROM wp_terms AS t
INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id
LEFT JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id
WHERE tt.taxonomy = 'post_tag' AND tt.count = 0;
L’opzione più vicina per rimuovere i tag inutilizzati in WP-Sweep è Post Orphaned Meta. Questa opzione valuta se ci sono metadati orfani e li rimuove:

Sebbene questa opzione possa rimuovere anche le categorie e altri dati, è una soluzione sicura da utilizzare, soprattutto se nessun altro post o pagina li utilizza.
5. Sbarazzati di pingback e trackback
Non sappiamo quanti siti web WordPress utilizzino i pingback e i trackback nell’era attuale, ma possono comunque ingombrare il tuo database se lasci l’impostazione attiva. La prima cosa da fare è verificare se l’opzione è disattivata. Si tratta di un’operazione semplice da eseguire nella schermata Settings > Discussion di WordPress:

Nella sezione Default Post Settings, assicurati di deselezionare le opzioni “Attempt to notify any blogs…” e “Allow link notifications…” e salva le modifiche. Successivamente, torna al tuo strumento di gestione del database ed esegui questa query:
DELETE c, cm
FROM wp_comments c
LEFT JOIN wp_commentmeta cm ON c.comment_ID = cm.comment_id
WHERE c.comment_type IN ('trackback', 'pingback’);
Entrambi questi elementi si trovano nello stesso posto dei commenti, anche se il tipo è diverso ed è quello su cui si concentra la query. Una volta completata questa operazione, non dovresti più vedere trackback o pingback nel tuo database.
L’ottimizzazione continua del database di Kinsta
Se sei cliente di Kinsta, probabilmente avrai sentito dire che offriamo un’ottimizzazione continua del database per i siti WordPress. È importante sapere che questa ottimizzazione automatica opera a basso livello del server di database – gestendo la cache e l’utilizzo della memoria – e non ottimizza i dati nelle tabelle RDBMS.
Monitoraggio delle prestazioni del database
Il monitoraggio delle prestazioni del database di WordPress è una parte essenziale della gestione di un sito. Ti aiuterà a identificare potenziali problemi prima che si aggravino e a garantire che il tuo sito rimanga efficiente e reattivo.
Molte delle tecniche che tratteremo in questo post serviranno a monitorare le prestazioni, come ad esempio l’utilizzo di EXPLAIN per le query lente. Tuttavia, è possibile fare molto di più. Infatti, phpmyAdmin include le proprie metriche sulle prestazioni nella scheda Status del server:

In questo modo è possibile visualizzare i tempi e i processi di esecuzione delle query (nella scheda Query statistics ), il che aiuta a identificare le query che necessitano di un’ottimizzazione. Per un monitoraggio avanzato, MySQL Workbench sarà prezioso:

Offre funzioni avanzate per la progettazione, lo sviluppo e l’amministrazione dei database. Inoltre, fornisce rapporti sulle prestazioni e diagnostica che possono aiutarti a mettere a punto il tuo database.
All’interno di WordPress, il plugin Query Monitor permette di monitorare le query del database, gli hook, i condizionali, le richieste HTTP e altro ancora.

È particolarmente utile per individuare le query lente e identificare i plugin o i temi che le causano. Nella maggior parte dei casi, però, si tratta di un plugin di sviluppo, quindi potrebbe non essere adatto a un sito di produzione.
Monitorare le prestazioni del database con lo strumento APM
Lo strumento Application Performance Monitoring (APM) di Kinsta all’interno della dashboard di MyKinsta offre un altro modo per tenere sotto controllo le prestazioni del database:

APM tiene sotto controllo le query SQL più lente:

Puoi accedere all’APM dalla dashboard MyKinsta, in particolare dalla schermata APM. Tieni presente che potrebbe essere necessario attivarla prima:

A questo punto, dovrai dare all’APM un po’ di tempo per raccogliere i dati. Tuttavia, una volta che saranno visibili, potrai controllare le query che potrebbero richiedere un’ulteriore ottimizzazione.
Come ottimizzare le query del database per ottenere una maggiore efficienza
L’ottimizzazione delle query del database che utilizzi è fondamentale per migliorare le prestazioni e la velocità del tuo sito WordPress. Query efficienti significano un recupero più rapido dei dati, che a sua volta porta a un miglioramento dei tempi di caricamento e a una migliore esperienza utente.
Dato che puoi utilizzare le query per ottimizzare il database di WordPress, ecco un paio di consigli su come renderle più efficienti:
- Ottimizza le strutture delle query. Noterai che non usiamo i caratteri jolly (o asterischi) nelle nostre query di esempio. Invece di usare
SELECT *, sii specifico per quanto riguarda le colonne esatte di cui hai bisogno. Inoltre, se possibile, usa leJOINinvece delle subquery. Le subquery possono essere meno efficienti, soprattutto se non hanno una buona struttura o se coinvolgono grandi insiemi di dati. - Usa la cache delle query. Strumenti come Redis possono memorizzare i risultati delle query in memoria. Ciò significa che i risultati della query possono essere serviti dalla cache piuttosto che interrogare nuovamente il database la volta successiva.
Questi sono suggerimenti vaghi, ma ci sono molte altre cose che puoi fare. Diamo un’occhiata veloce a questo aspetto.
Ottimizzazione avanzata del database di WordPress e suggerimenti per la risoluzione dei problemi
L’indicizzazione può aiutarti ad aggiungere una guida rapida al tuo database. Aiuta il server del database a trovare i dati più velocemente senza dover scansionare tutte le righe di una tabella.
Per ottenere questo risultato, individua le colonne che vengono utilizzate di frequente nelle tue query e valuta la possibilità di aggiungere degli indici ad esse. Puoi farlo da phpMyAdmin (o simili). Per prima cosa, clicca sulla tabella che desideri indicizzare e vai alla scheda Structure:

Quindi, seleziona le colonne che vuoi indicizzare e scegli l’opzione Index in fondo alla tabella:

Una volta salvate le modifiche, le colonne verranno indicizzate.
L’istruzione EXPLAIN può anche aiutarti a capire come MySQL esegue la tua query. Può aiutarti a individuare le inefficienze e a capire come la tua query interagisce con gli indici. Per eseguirla, aggiungi l’istruzione all’inizio di una query esistente. Quando la eseguirai, SQL ti spiegherà come eseguirà la query:

Non possiamo trattare in questa sede tutto ciò che riguarda l’istruzione EXPLAIN, anche se la documentazione di MySQL copre quasi tutto ciò che è necessario sapere al riguardo.
Come gestire database di grandi dimensioni in WordPress
Quando un sito WordPress cresce in contenuti, utenti e traffico, il suo database si espande naturalmente. Un database di grandi dimensioni sarà un problema che incontrerai (o di cui ti preoccuperai) spesso durante la gestione di un sito.
La maggior parte dei consigli che ti forniamo in questo articolo può essere adatta a un database di grandi dimensioni – e a ridurlo. Tuttavia, ci sono molti altri consigli che possiamo dare per quei database che saranno intrinsecamente più grandi di quelli tipici:
- Archivia i dati più vecchi. Invece di mantenere tutti i dati in vita, prendi in considerazione l’archiviazione dei vecchi post o dei dati degli utenti a cui non accedi regolarmente.
- Utilizza una rete di distribuzione dei contenuti (CDN). Scaricare e servire risorse statiche come immagini, video e download da un altro server può ridurre il carico sul tuo sito e contribuire a velocizzarlo. Inoltre, il tuo sito verrà caricato più velocemente dagli utenti, indipendentemente da dove si trovino.
- Query personalizzate. Se ti occupi di sviluppo di WordPress, scrivi query efficienti per i tuoi temi e plugin. Questo ti aiuterà a recuperare solo ciò che ti serve e a mantenere alta l’efficienza.
Puoi anche prendere in considerazione tecniche avanzate come il partizionamento delle tabelle e lo “sharding del database“. In questo caso i dati vengono suddivisi su più database. Si tratta di un’operazione spesso complessa e che richiede una gestione esperta.
A questo proposito, gli esperti sono una necessità quando si tratta di ottenere prestazioni elevate dal tuo database e dal tuo sito web. L’hosting WordPress di Kinsta è scalabile, gestito e ottimizzato per la piattaforma.

I piani partono da 35 dollari al mese e la nostra architettura può supportare un semplice blog fino a reti di livello aziendale. Scrivici per scoprire come possiamo diventare il tuo partner di hosting a lungo termine, indipendentemente dai tuoi obiettivi.
Riepilogo
Il database di WordPress è come il motore di un’automobile: senza una messa a punto, non funzionerà come dovrebbe. Infatti, una mancata ottimizzazione del database di WordPress potrebbe farti scendere dal primo all’ultimo posto nelle classifiche di ricerca. Anche i tuoi utenti si accorgeranno che il tuo sito sta diventando un’altra cosa, per cui un database perfetto e veloce è fondamentale per il successo.
Ci sono molti modi per farlo, ma una combinazione di tecniche manuali, plugin e strumenti di ottimizzazione di Kinsta ti darà i migliori benefici. In molti casi, l’automazione può aiutarti a svolgere molte di queste attività senza dover accedere o eseguire uno strumento specifico.
Ci piacerebbe sapere se i nostri consigli per l’ottimizzazione del database di WordPress hanno funzionato per te. Facci sapere quali hanno avuto un impatto maggiore nella sezione commenti qui sotto!