WordPress: quando la tabella wp_commentmeta diventa troppo grande
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!
Tags: database, WordPress