Andrea Beggi

There is no rehearsal, no second chance, no false start, no better circumstances.

WordPress: quando la tabella wp_commentmeta diventa troppo grande

A T T E N Z I O N E ! Questo post ha piu' di sei mesi. Le informazioni contenute potrebbero non essere aggiornate.

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!

2 Commenti

Mariuzze | #

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