Es conveniente realizar periódicamente tareas de mantenimiento con la base de datos MySQL de WordPress, sobre todo si nuestro sitio tiene mucho movimiento en cuanto a comentarios y recepción/filtrado de spam con Akismet. En su día os recomendé los plugins WP-Optimize y Clean Options, que nos vienen genial para optimizar la base de datos con un click y limpiar registros huérfanos de la tabla wp_options.
En esta entrada me voy a centrar sobre todo en la tabla wp_commentmeta. Esta tabla contiene registros con meta datos de los comentarios, sobre todo información relacionada con el plugin Akismet. Para que os hagáis una idea, en un blog con mucho movimiento de comentarios y también recepción de spam la tabla pesaba nada más y nada menos que 50 megas. Todo ese contenido era completamente prescindible como vamos a ver a continuación.
Lo primero que debemos hacer es un backup de la base de datos antes de tocar nada. Después, con esta primera sentencia SQL vemos el número de registros que podemos eliminar de la tabla:
SELECT * FROM wp_commentmeta WHERE comment_id NOT IN (SELECT comment_id FROM wp_comments)
Básicamente muestra los registros con meta datos de comentarios eliminados, de los cuales se sigue almacenando la información. Cuando nos cercioremos de que efectivamente hacen referencia al plugin Akismet, comentarios eliminados, etc podemos proceder a eliminarlos:
DELETE FROM wp_commentmeta WHERE comment_id NOT IN (SELECT comment_id FROM wp_comments);
Además de esta SQL, podemos ejecuta una que elimine los registros con la meta_key akismet:
SELECT * FROM wp_commentmeta WHERE meta_key LIKE "%akismet%"
DELETE FROM wp_commentmeta WHERE meta_key LIKE '%akismet%';
Después, ejecutad un optimize de la tabla con un mysqlcheck y veréis que se ha reducido su tamaño probablemente en un 99%. Finalmente, habrá que tener en cuenta hacer estas tareas de forma periódica ya que Akismet seguirá escribiendo registros en esa tabla según sigamos recibiendo Spam.