{"id":1940,"date":"2026-05-02T07:29:26","date_gmt":"2026-05-02T07:29:26","guid":{"rendered":"https:\/\/studioimmens.com\/velocizzare-il-database-wordpress\/"},"modified":"2026-07-16T10:13:57","modified_gmt":"2026-07-16T08:13:57","slug":"velocizzare-il-database-wordpress","status":"publish","type":"post","link":"https:\/\/studioimmens.com\/en\/velocizzare-il-database-wordpress\/","title":{"rendered":"Velocizzare il database WordPress"},"content":{"rendered":"<h2>Struttura del database WordPress<\/h2>\n<p>Il database di WordPress \u00e8 composto da circa 12 tabelle predefinite (con prefisso configurabile, tipicamente <code>wp_<\/code>). Le tabelle principali sono: <code>wp_posts<\/code> (contenuti: articoli, pagine, revisioni, allegati), <code>wp_postmeta<\/code> (metadati dei contenuti), <code>wp_options<\/code> (impostazioni del sito e opzioni dei plugin), <code>wp_usermeta<\/code> (metadati degli utenti), <code>wp_terms<\/code> (categorie, tag), <code>wp_term_relationships<\/code> (relazioni contenuti-tassonomie), <code>wp_comments<\/code> e <code>wp_commentmeta<\/code> (commenti). Con il tempo, queste tabelle accumulano dati superflui che rallentano le query e aumentano le dimensioni del database, incidendo negativamente sulle performance del sito.<\/p>\n<p>Le tabelle pi\u00f9 soggette a gonfiore sono <code>wp_posts<\/code> (per le revisioni e gli auto-salvataggi), <code>wp_postmeta<\/code> (ogni plugin o page builder aggiunge righe infinite), <code>wp_options<\/code> (transienti scaduti, opzioni di plugin disattivati) e <code>wp_usermeta<\/code> (dati di sessione, preferenze utente). Capire la struttura \u00e8 il primo passo per un&#8217;ottimizzazione mirata.<\/p>\n<h2>Fonti di gonfiore del database<\/h2>\n<p>Identificare le cause del gonfiore ti permette di intervenire chirurgicamente senza rischiare di eliminare dati importanti.<\/p>\n<h3>Revisioni e auto-salvataggi<\/h3>\n<p>Ogni volta che modifichi un articolo o una pagina, WordPress salva una revisione. Con 100 modifiche a un articolo, hai 100 righe in <code>wp_posts<\/code> per un singolo contenuto. Le revisioni sono utili per il rollback, ma dopo la pubblicazione raramente servono. Limita le revisioni a 3-5 per post aggiungendo <code>define('WP_POST_REVISIONS', 5);<\/code> in wp-config.php, oppure cancellale periodicamente.<\/p>\n<h3>Bozze automatiche e cestino<\/h3>\n<p>WordPress salva bozze automatiche ogni 2-4 minuti durante la scrittura. Se l&#8217;autore chiude il browser senza pubblicare, la bozza rimane nel database. Gli articoli nel cestino (trash) occupano spazio anche se non visibili. Configura lo svuotamento automatico del cestino: <code>define('EMPTY_TRASH_DAYS', 30);<\/code> in wp-config.php imposta la cancellazione definitiva dopo 30 giorni.<\/p>\n<h3>Commenti spam<\/h3>\n<p>Anche con Akismet o antiflirtro, i commenti spam si accumulano nel database. Akismet li sposta nello spam, ma non li elimina. Con migliaia di spam commenti al mese, la tabella <code>wp_comments<\/code> cresce rapidamente. Elimina periodicamente i commenti spam e considera la cancellazione automatica dopo 30 giorni con plugin come CleanTalk o WP-Optimize.<\/p>\n<h3>Transienti scaduti<\/h3>\n<p>I transienti sono dati temporanei che i plugin usano per caching. Durano da poche ore a qualche giorno. WordPress li cancella alla scadenza solo se il transient viene richiesto. I transienti scaduti non richiesti restano nella tabella <code>wp_options<\/code>, a volte centinaia di migliaia di righe. Plugin mal scritti possono generare transienti univoci che non scadono mai. La pulizia regolare dei transienti \u00e8 essenziale.<\/p>\n<h2>Plugin per la pulizia del database<\/h2>\n<p>Se preferisci non scrivere SQL, i plugin offrono interfacce grafiche per la pulizia. Ecco i migliori:<\/p>\n<h3>WP-Optimize<\/h3>\n<p>WP-Optimize pulisce revisioni, bozze, commenti spam, transienti e tabelle. Offre anche ottimizzazione tabelle MySQL (OPTIMIZE TABLE), compressione immagini e caching. L&#8217;interfaccia seleziona cosa pulire con preview dei dati eliminabili. La pianificazione automatica \u00e8 inclusa: imposta pulizia settimanale e WP-Optimize mantiene il database snello senza intervento manuale.<\/p>\n<h3>Advanced Database Cleaner<\/h3>\n<p>Specializzato nella pulizia del database, Advanced Database Cleaner rileva revisioni, bozze, post nel cestino, commenti spam, transienti scaduti, tabelle orfane (lasciate da plugin disinstallati), opzioni inutilizzate e metadati orfani. Mostra il numero di righe eliminabili e la dimensione stimata del recupero. Include un scheduler per pulizie automatiche. La versione PRO aggiunge pulizia di wp_postmeta orfano, wp_usermeta orfano e tabelle di plugin specifici.<\/p>\n<h2>Query SQL manuali per la pulizia<\/h2>\n<p>Per chi ha accesso diretto al database (phpMyAdmin, Adminer o riga di comando MySQL), le query manuali sono il metodo pi\u00f9 rapido ed efficace. Ecco le query pi\u00f9 utili. Sostituisci <code>wp_<\/code> con il tuo prefisso.<\/p>\n<p>Cancellare revisioni: <code>DELETE FROM wp_posts WHERE post_type = 'revision';<\/code><\/p>\n<p>Cancellare bozze automatiche: <code>DELETE FROM wp_posts WHERE post_status = 'auto-draft';<\/code><\/p>\n<p>Cancellare post nel cestino: <code>DELETE FROM wp_posts WHERE post_status = 'trash';<\/code><\/p>\n<p>Cancellare commenti spam: <code>DELETE FROM wp_comments WHERE comment_approved = 'spam';<\/code><\/p>\n<p>Cancellare transienti scaduti: <code>DELETE FROM wp_options WHERE option_name LIKE '_transient_timeout_%' AND option_value < UNIX_TIMESTAMP();<\/code> e poi <code>DELETE FROM wp_options WHERE option_name LIKE '_transient_%' WHERE option_name NOT LIKE '_transient_timeout_%';<\/code><\/p>\n<p>Esegui sempre un backup prima di qualsiasi DELETE. Dopo la pulizia, ottimizza le tabelle con <code>OPTIMIZE TABLE wp_posts, wp_postmeta, wp_options, wp_comments;<\/code><\/p>\n<h2>Ottimizzazione MySQL<\/h2>\n<p>Oltre alla pulizia, ottimizzare la configurazione di MySQL migliora le performance del database. Gli indici sono fondamentali: assicurati che le colonne usate in WHERE, JOIN e ORDER BY siano indicizzate. La tabella <code>wp_postmeta<\/code> \u00e8 famosa per la mancanza di indici adeguati. Aggiungi un indice composto su <code>post_id<\/code> e <code>meta_key<\/code> per velocizzare le query dei plugin che leggono metadati. Abilita il query cache di MySQL (dimensioni consigliate: 64-256 MB) per memorizzare i risultati delle query pi\u00f9 frequenti. Regola <code>innodb_buffer_pool_size<\/code> al 70-80% della RAM disponibile per database InnoDB. Disabilita <code>performance_schema<\/code> se non lo usi per risparmiare risorse.<\/p>\n<h2>InnoDB vs MyISAM: quale scegliere<\/h2>\n<p>WordPress usa InnoDB come motore predefinito dalla versione 5.5 di MySQL\/MariaDB. InnoDB supporta transazioni ACID, foreign key, row-level locking e migliori performance in scritture concorrenti. MyISAM era il motore storico di WordPress: pi\u00f9 veloce in letture semplici ma blocca l'intera tabella in scrittura, non supporta transazioni e si corrompe pi\u00f9 facilmente. La scelta \u00e8 chiara: usa InnoDB per tutte le tabelle WordPress. Se hai ancora tabelle MyISAM, convertile: <code>ALTER TABLE wp_posts ENGINE=InnoDB;<\/code><\/p>\n<h2>Piano di manutenzione regolare<\/h2>\n<p>La pulizia del database non \u00e8 un'operazione una tantum. Stabilisci un calendario di manutenzione: settimanale: cancella commenti spam, revisioni e bozze automatiche; mensile: cancella transienti scaduti, ottimizza tabelle, verifica la frammentazione; trimestrale: cancella metadati orfani, tabelle di plugin disinstallati, utenti non verificati; annuale: esporta e reimporta il database per ricostruire gli indici. L'automazione con plugin o cron job rende la manutenzione trasparente.<\/p>\n<h2>Monitoraggio delle performance del database<\/h2>\n<p>Monitora regolarmente la dimensione del database (phpMyAdmin mostra il totale in MB), il tempo medio delle query (con Query Monitor), la frammentazione delle tabelle (con SHOW TABLE STATUS), e la cache hit rate (con SHOW STATUS LIKE '%Qcache%'). Se il database supera 1 GB per un sito WordPress medio, probabilmente c'\u00e8 gonfiore da rimuovere. Un database ottimizzato si riflette in tempi di caricamento ridotti e un server pi\u00f9 reattivo.<\/p>\n<h2>Conclusioni<\/h2>\n<p>Velocizzare il database WordPress \u00e8 uno degli interventi pi\u00f9 efficaci per migliorare le performance del sito. La combinazione di pulizia regolare, ottimizzazione MySQL, scelta del motore corretto e monitoraggio continuo mantiene il database snello e veloce. Inizia con una pulizia iniziale usando un plugin o query SQL, poi automatizza la manutenzione periodica. Il risultato sar\u00e0 un sito WordPress pi\u00f9 veloce, un server meno carico e un'esperienza utente migliore.<\/p>","protected":false},"excerpt":{"rendered":"<p>Struttura del database WordPress Il database di WordPress \u00e8 composto da circa 12 tabelle predefinite (con prefisso configurabile, tipicamente wp_). Le tabelle principali sono: wp_posts (contenuti: articoli, pagine, revisioni, allegati), wp_postmeta (metadati dei contenuti), wp_options (impostazioni del sito e opzioni dei plugin), wp_usermeta (metadati degli utenti), wp_terms (categorie, tag), wp_term_relationships (relazioni contenuti-tassonomie), wp_comments e wp_commentmeta [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2059,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_gspb_post_css":"","ai_primary_source":"Studio Immens Blog","visibility_scope":"both","ai_summary":"Struttura del database WordPress Il database di WordPress \u00e8 composto da circa 12 tabelle predefinite (con prefisso configurabile, tipicamente wp_). Le tabelle principali sono: wp_posts (contenuti: articoli, pagine, revisioni, allegati), wp_postmeta (metadati dei contenuti), wp_options (impostazio...","ai_intent":"informative","ai_related_resources":"","ai_priority":5,"ai_entity_type":"Article","ai_is_based_on":"https:\/\/blog.studioimmens.com\/velocizzare-il-database-wordpress\/","ai_citations":"","ai_mentions":"","ai_speakable_selector":"","ai_chunk_hints":"Velocizzare, il, database, WordPress","footnotes":""},"categories":[135],"tags":[],"ai_visibility":[],"class_list":["post-1940","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-performance-e-hosting"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/studioimmens.com\/en\/wp-json\/wp\/v2\/posts\/1940","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/studioimmens.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/studioimmens.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/studioimmens.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/studioimmens.com\/en\/wp-json\/wp\/v2\/comments?post=1940"}],"version-history":[{"count":0,"href":"https:\/\/studioimmens.com\/en\/wp-json\/wp\/v2\/posts\/1940\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/studioimmens.com\/en\/wp-json\/wp\/v2\/media\/2059"}],"wp:attachment":[{"href":"https:\/\/studioimmens.com\/en\/wp-json\/wp\/v2\/media?parent=1940"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/studioimmens.com\/en\/wp-json\/wp\/v2\/categories?post=1940"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/studioimmens.com\/en\/wp-json\/wp\/v2\/tags?post=1940"},{"taxonomy":"ai_visibility","embeddable":true,"href":"https:\/\/studioimmens.com\/en\/wp-json\/wp\/v2\/ai_visibility?post=1940"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}