Talvolta può acccadere che la tabella wp_commentmeta
del database di WordPress diventi di dimensioni sproporzionate rispetto alla wp_comments
. Come il nome suggerisce, wp_commentmeta
contiene i metadati di ciascun commento; può capitare che rimangano dei record “orfani” di commenti cancellati. Succedeva abbastanza spesso per colpa del plugin antispam Akismet che è stato affetto per un po’ da questo fastidioso bug, ed è uno delle cause principali della crescita indiscriminata del database. Questi record inutili possono essere cancellati per recuperare spazio e ottenere un db più maneggevole. Prima di qualunque operazione è fortemente consigliato fare un backup completo del database tramite il menu nella linguetta “Esporta”(*).
Come prima cosa va verificato che effettivamente i record siano “orfani”; dall’interfaccia di PHPMyAdmin (o da riga di comando ma se lo sapete fare non avete bisogno di questo post) si seleziona il database e poi si clicca sulla linguetta “SQL”. Nell’apposito form va inserita questa query che visualizzerà i candidati alla cancellazione:
Select * FROM wp_commentmeta WHERE comment_id NOT IN (SELECT comment_id FROM wp_comments
)
e cliccare su “Esegui”. Questo comando non è distruttivo e non fa altro che visualizzare una (lunga) lista di record. Diamo una scorsa a campione per verificare che effettivamente i record siano cancellabili in blocco. In genere si capisce dal riferimento ad Akismet o dal contenuto “spammoso”. Una volta ragionevolmente sicuri di poter cancellare senza grossi problemi, ripetiamo la procedura inserendo questa volta:
DELETE FROM wp_commentmeta WHERE comment_id NOT IN (SELECT comment_id FROM wp_comments)
Al termine dell’operazione andiamo alla linguetta “Struttura”, selezioniamo tutti i campi e scegliamo “Ottimizza” dall’apposito menu a tendina.
Ecco fatto! Il vostro database adesso è molto più “magro” di prima.
(*) Fatelo davvero!
Commenti
2 risposte a “WordPress: quando la tabella wp_commentmeta diventa troppo grande”
[…] l’articolo completo. Questo post è stato scritto da marcellobug e pubblicato il aprile 25, 2011 alle 10:01 am in […]
Andrea buongiorno.
La mia tabella wp_commentmeta è di 34 Mib con 27,637 record
la mia tabella wp_comments è di 6,3 Mib con 11,868 record
Ho fatto tutto quello da te indicato e mi ha cancellato all’incirca 3000 commenti.
Come posso fare per cancellare tutti quelli che non servono? C’è un modo veloce?
Grazie mille