WordPress : Nettoyer la table wp_commentmeta d’Akismet
Vous avez un blog sous WordPress et la table wp_commentmeta de votre base de données est en surpoids ? A défaut d’un quelconque régime, une intervention manuelle s’impose de toute urgence.
Au fil des mois et des années, la table wp_commentmeta – dont le préfixe peut varier – grossit de manière importante. Le responsable est Akismet, la célèbre extension anti-spam du système de gestion de contenu WordPress, comme vous l’aurez certainement remarqué au travers des différentes valeurs du champ meta_key : akismet_history, akismet_result, akismet_as_submitted, akismet_user_result et autre akismet_user.
Deux étapes sont envisageables dans cette procédure de nettoyage.
Il est dans un premier temps possible de supprimer les entrées de la table wp_commentmeta n’ayant plus de relation dans la table des commentaires wp_comments.
Pour se faire, après vérification via la requête suivante :
SELECT * FROM wp_commentmeta WHERE comment_id NOT IN ( SELECT comment_id FROM wp_comments)
Exécuter la requête de suppression :
DELETE FROM wp_commentmeta WHERE comment_id NOT IN ( SELECT comment_id FROM wp_comments)
Il est possible d’aller plus loin en vidant la table wp_commentmeta des enregistrements liés à Akismet.
Une nouvelle fois, après vérification :
SELECT * FROM wp_commentmeta WHERE meta_key LIKE "%akismet%"
La requête de suppression sera la suivante :
DELETE FROM wp_commentmeta WHERE meta_key LIKE "%akismet%"
Pour des questions de performance, il est vivement conseillé d’optimiser la table wp_commentmeta après exécution des requêtes SQL ci-dessus.
Dans mon cas, je suis passé d’une table d’un poids de 5.8 Mb à 7.3 Kb. Belle optimisation !
Ayant été confronté à ce problème il y a quelques jours, j’ai exécuté la 1ere requête que tu présentes. Résultat : 25MB en moins ! Je vais voir avec ce que tu proposes si je peux encore alleger un peu ma base. Merci :-)