Cada entrada que editas, cada comentario que recibes y cada plugin que instalas y desinstalas deja huella en tu base de datos MySQL. Con el tiempo, esa huella se acumula en forma de datos que nadie usa, y una base de datos hinchada ralentiza cada consulta que WordPress hace para construir tus páginas.
En Avantys nos encontramos constantemente con bases de datos de webs pequeñas que pesan lo mismo que las de sitios diez veces más grandes, simplemente porque nunca se han limpiado. Este artículo te enseña qué se acumula, cómo detectarlo y cómo limpiarlo de forma segura.
Si quieres el panorama completo de rendimiento antes de entrar en este punto concreto, empieza por Cómo Optimizar el Rendimiento de tu WordPress, nuestro sub-pillar de rendimiento.
Qué se acumula en la base de datos sin que lo veas
WordPress guarda muchísima más información de la que crees en su base de datos, y no toda es necesaria a largo plazo.
| Origen del “peso extra” | Qué es | Impacto típico |
|---|---|---|
| Revisiones de entradas | Cada guardado automático o manual de un post | Puede multiplicar por 10-50 el tamaño de la tabla wp_posts |
| Transients expirados | Datos temporales que deberían autoeliminarse | Cientos o miles de filas en wp_options |
| Comentarios spam y en papelera | Comentarios marcados como spam pero no eliminados | Miles de filas en sitios con mucho tráfico |
| Tablas huérfanas | Tablas creadas por plugins ya desinstalados | Pueden ocupar varios MB sin ningún uso |
| Postmeta huérfano | Metadatos de posts ya eliminados | Ralentiza consultas que cruzan wp_postmeta |
| Tablas MyISAM | Motor de tabla antiguo que bloquea la tabla entera al escribir | Cuellos de botella en sitios con tráfico simultáneo alto |
Cómo saber si tu base de datos necesita limpieza
Antes de tocar nada, mide el tamaño actual. Si usas phpMyAdmin, la pestaña de la base de datos muestra el tamaño de cada tabla directamente. Si prefieres la línea de comandos y tienes WP-CLI instalado:
wp db size --tables
Este comando lista cada tabla de tu instalación con su tamaño, para que puedas ver de un vistazo cuáles destacan por encima de lo esperado. Como referencia: en un blog corporativo normal, wp_posts no debería superar unos pocos MB salvo que tengas cientos de entradas; si ves varias decenas de MB en un sitio pequeño, casi seguro hay revisiones acumuladas.
Limpieza segura: haz backup primero
Esto no es negociable. Antes de ejecutar cualquier consulta SQL directa sobre tu base de datos en producción, haz una copia completa. Si algo sale mal en una consulta de borrado, sin backup no hay vuelta atrás. Cubrimos cómo hacerlo bien en Backups de WordPress: qué copiar y con qué frecuencia, aquí lo damos por hecho como paso previo obligatorio.
Eliminar revisiones acumuladas
DELETE FROM wp_posts WHERE post_type = 'revision';
Esta consulta elimina el registro de revisiones, pero no limpia los metadatos asociados. Para completar la limpieza:
DELETE FROM wp_postmeta WHERE post_id NOT IN (SELECT ID FROM wp_posts);
Limitar las revisiones futuras
En lugar de limpiar manualmente cada mes, limita cuántas revisiones guarda WordPress desde el principio. Añade esto a tu wp-config.php, antes de la línea /* ¡Eso es todo, deja de editar! */:
define('WP_POST_REVISIONS', 3);
define('AUTOSAVE_INTERVAL', 120);
La primera línea limita a 3 el número de revisiones guardadas por entrada; la segunda espacia el autoguardado a cada 120 segundos en lugar de los 60 por defecto, reduciendo la frecuencia de escritura en la base de datos.
Vaciar comentarios spam y en papelera
DELETE FROM wp_comments WHERE comment_approved = 'spam';
DELETE FROM wp_comments WHERE comment_approved = 'trash';
Y para que no se vuelva a acumular indefinidamente, define cada cuánto se vacía la papelera automáticamente:
define('EMPTY_TRASH_DAYS', 15);
Eliminar transients expirados
Los transients son datos temporales, resultados de consultas pesadas guardados durante un tiempo para no repetir el cálculo. El problema es que muchos plugins los crean y no siempre los limpian cuando expiran. Elimínalos con cuidado, ya que algunos transients activos son necesarios para plugins en funcionamiento:
DELETE FROM wp_options WHERE option_name LIKE '_transient_timeout_%' AND option_value < UNIX_TIMESTAMP();
Para este paso concreto, muchos administradores prefieren un plugin de confianza (como WP-Optimize) en lugar de SQL manual, precisamente porque distingue entre transients caducados y activos con más seguridad que una consulta genérica.
Detectar y eliminar tablas huérfanas
Cuando desinstalas un plugin, algunos eliminan sus tablas automáticamente y otros no. Para verlas todas:
SHOW TABLES LIKE 'wp_%';
Compara el listado con los plugins que tienes activos actualmente. Si ves una tabla con el prefijo de un plugin que ya no usas, puedes eliminarla, pero verifica primero que no pertenece a un plugin que sigue en uso bajo otro nombre de tabla.
Optimizar las tablas después de limpiar
Borrar filas no reduce automáticamente el espacio físico ocupado en el disco, las tablas quedan “fragmentadas”. Tras la limpieza, optimiza las tablas:
OPTIMIZE TABLE wp_posts, wp_postmeta, wp_options, wp_comments;
MyISAM vs InnoDB
Si tu instalación es antigua, es posible que algunas tablas todavía usen el motor MyISAM, que bloquea la tabla completa durante cada escritura. InnoDB, el motor por defecto en instalaciones modernas, bloquea solo la fila afectada, lo que mejora notablemente el rendimiento en sitios con varios usuarios o pedidos simultáneos (especialmente relevante en WooCommerce). Para comprobar el motor de cada tabla:
SELECT table_name, engine FROM information_schema.tables WHERE table_schema = 'tu_base_de_datos';
Y para convertir una tabla concreta:
ALTER TABLE wp_options ENGINE = InnoDB;
Automatizar el mantenimiento
La limpieza manual funciona una vez, pero el problema vuelve a acumularse mes a mes si no se automatiza. Las opciones más habituales:
- Un plugin de limpieza programada (como WP-Optimize) configurado para ejecutar limpieza semanal de revisiones y transients caducados.
- Una tarea cron a nivel de servidor que ejecute comandos WP-CLI de limpieza en un horario de bajo tráfico.
- Revisión trimestral manual de tablas huérfanas, que no se puede automatizar del todo porque requiere criterio sobre qué plugins siguen en uso.
| Frecuencia recomendada | Tarea |
|---|---|
| Semanal | Vaciar spam y papelera de comentarios |
| Mensual | Limpiar revisiones y transients expirados |
| Trimestral | Revisar tablas huérfanas y optimizar tablas |
| Anual (o tras migración) | Verificar motor de tablas (MyISAM vs InnoDB) |
Un matiz importante sobre la automatización: que una tarea esté programada no significa que puedas olvidarte de ella del todo. Conviene revisar de vez en cuando que el plugin o el cron sigue ejecutándose correctamente, hemos visto limpiezas “automáticas” que llevaban meses fallando en silencio porque una actualización de PHP o un cambio de plugin había roto la tarea programada sin que nadie se diera cuenta hasta que la base de datos volvió a crecer sin control.
Un caso real: cuánto pesa realmente esto
Para que tengas una referencia concreta, este es un patrón habitual que vemos al auditar webs con 3-4 años de antigüedad sin mantenimiento de base de datos:
| Antes de la limpieza | Después de la limpieza |
|---|---|
wp_posts: 45 MB (180 entradas, miles de revisiones) | wp_posts: 6 MB |
wp_options: 28 MB (miles de transients caducados) | wp_options: 3 MB |
wp_comments: 12 MB (spam sin vaciar) | wp_comments: 2 MB |
| 3 tablas huérfanas de plugins desinstalados | 0 |
| TTFB medio: 720ms | TTFB medio: 510ms |
No es un caso aislado, es el patrón más frecuente que encontramos en sitios de varios años sin este mantenimiento. La mejora de TTFB no viene solo de “menos peso”: una base de datos más pequeña tiene índices más eficientes y cada consulta recorre menos filas para encontrar lo que necesita.
Si prefieres no tocar SQL: alternativas paso a paso
No todo el mundo se siente cómodo ejecutando consultas SQL directamente, y no pasa nada. Estas son las alternativas con menos riesgo:
- phpMyAdmin (interfaz gráfica): la mayoría de paneles de hosting (cPanel, Plesk) incluyen acceso a phpMyAdmin, donde puedes ver el tamaño de cada tabla, ejecutar
OPTIMIZE TABLEcon un clic desde el menú de la tabla, y hacer una exportación (backup) antes de tocar nada, también con un solo clic. - Un plugin de limpieza con vista previa: herramientas como WP-Optimize muestran cuánto espacio vas a liberar antes de confirmar la acción, y separan claramente revisiones, transients y tablas por tipo, reduciendo el riesgo de borrar algo por error.
- Pedir la limpieza como parte de un servicio gestionado: si prefieres no tener que decidir qué es seguro borrar y qué no, esto es exactamente el tipo de tarea que absorbemos dentro de la gestión continua, sin que tengas que aprender SQL ni recordar hacerlo cada mes.
Cuándo esto deja de ser mantenimiento y pasa a ser un problema mayor
Si tras limpiar la base de datos el rendimiento no mejora de forma notable, el cuello de botella probablemente está en otro sitio: hosting, plugins mal optimizados o falta de caché. La base de datos es una pieza del rendimiento general, no la única, el panorama completo está en Cómo Optimizar el Rendimiento de tu WordPress.
Hay una señal que sí conviene tomarse en serio: si la base de datos vuelve a hincharse en cuestión de semanas tras cada limpieza, no es un problema de mantenimiento puntual, es un plugin o una integración generando datos de forma descontrolada (logs excesivos, sesiones que nunca expiran, sincronizaciones repetidas con un servicio externo). En ese caso, la limpieza es solo un parche, hay que identificar y corregir la causa que genera ese volumen, no solo seguir borrando cada mes.
Preguntas Frecuentes
¿Es seguro borrar todas las revisiones de golpe? Sí, siempre que hayas hecho backup antes. Las revisiones son historial de ediciones, no contenido publicado, eliminarlas no afecta a lo que ven tus visitantes.
¿Cada cuánto debería limpiar la base de datos? Mensualmente para la mayoría de sitios; semanalmente si tienes mucho volumen de contenido, comentarios o eres una tienda WooCommerce activa.
¿Un plugin de limpieza es suficiente o necesito tocar SQL directamente? Para el mantenimiento habitual, un plugin de confianza es suficiente y más seguro. El SQL directo tiene sentido cuando hay un problema puntual grande (por ejemplo, miles de transients acumulados de golpe).
¿Puedo perder contenido al limpiar la base de datos? Si sigues los pasos de este artículo y limpias solo revisiones, spam y transients caducados, no. El riesgo aparece si borras tablas sin verificar antes si un plugin activo las sigue usando.
¿Por qué mi base de datos pesa tanto si mi web tiene poco contenido? Casi siempre son revisiones acumuladas o una tabla huérfana de un plugin antiguo. Es más común de lo que parece en webs con años de antigüedad.
¿WP-CLI es necesario para hacer esta limpieza?
No es obligatorio, pero facilita mucho el diagnóstico (wp db size --tables) y la automatización si tienes acceso SSH a tu servidor.
¿Convertir tablas de MyISAM a InnoDB tiene riesgo? El proceso en sí es seguro con backup previo, pero puede tardar si la tabla es grande. Hazlo fuera de horas de tráfico alto.
¿Cómo afecta esto a WooCommerce en concreto? Las tiendas generan muchos más registros (pedidos, sesiones, logs) que un blog normal, por lo que necesitan limpieza más frecuente. Lo tratamos en detalle en Mantenimiento de WooCommerce: checklist completo.
¿Optimizar la base de datos mejora el TTFB? Sí, de forma directa: cada consulta que WordPress hace a una tabla más ligera y mejor indexada se resuelve más rápido, lo que reduce el tiempo de respuesta del servidor.
¿Necesito acceso SSH para hacer todo esto? No necesariamente. Los pasos con phpMyAdmin cubren la mayoría de casos sin necesidad de terminal; WP-CLI es más rápido pero no imprescindible para el mantenimiento básico.
¿Qué pasa si mi hosting no me da acceso directo a la base de datos? Es poco habitual en hosting orientado a WordPress, pero si ocurre, tu proveedor debería poder ejecutar estas tareas de mantenimiento por ti bajo petición.
Conclusión
La base de datos es la parte menos visible del rendimiento de WordPress, y por eso es la que más se descuida. Una limpieza periódica, automatizada donde se pueda y revisada con criterio donde no, evita que ese peso invisible acabe determinando la velocidad de toda tu web.
Si prefieres no llevar tú este mantenimiento cada mes, en Avantys lo incluimos dentro de la supervisión continua de Gestión WordPress: revisamos y optimizamos la base de datos como parte del mismo servicio que cubre actualizaciones, seguridad y backups.
Artículos relacionados
- Cómo optimizar el rendimiento de tu WordPress
- Cómo elegir el hosting adecuado para que WordPress no vaya lento
- Caché en WordPress: tipos y cuál elegir
- Backups de WordPress: qué copiar y con qué frecuencia
- Mantenimiento de WooCommerce: checklist completo
¿Y si tu WordPress lo lleváramos nosotros?
Actualizaciones, seguridad, backups verificados, staging y rendimiento, gestionado de forma continua por una persona que responde, donde ya lo tengas o te lo montamos. Auditoría gratuita de tu web actual.