Limpiar la base de datos de WordPress

Dificultad del post: facilmediadificil
advanced db cleaner

Este post es realmente una forma de profundizar en algo de lo que ya he hablado en este otro, donde expliqué un poco más en detalle la base de datos de WordPress.

En este artículo vamos a hablar sobre cómo limpiar la base de datos de WordPress, un proceso que muy poca gente hace bien, ya que los principales plugins de limpieza (los de toda la vida) provocan que no entendamos la base de datos de WordPress ni su mantenimiento.

limpiar base de datos wordpress

He estado dándole vueltas a cómo enfocar este post y, finalmente, he decidido hacerlo basándonos en acciones de limpieza. Te pongo varios ejemplos:

  • Limpieza de tablas huérfanas en la base de datos de WordPress.
  • Limpieza de options huérfanos en la tabla wp_options de WordPress.
  • Limpieza de autoloads huérfanos en la tabla wp_options de WordPress.
  • Limpieza de transients en la tabla wp_options de WordPress.
  • Limpieza de cronjobs de WordPress, que se guardan dentro de wp_options.
  • Limpieza de elementos comunes como revisiones, borradores, spam, etc.

Realmente, si no entiendes cómo funciona la base de datos de tu sitio web WordPress, te recomiendo ir antes a este otro post: https://alvarofontela.com/entendiendo-base-datos-mysql-wordpress/

Recuerda que, antes de realizar cualquier proceso de limpieza o, en general, cualquier proceso que implique hacer modificaciones en las bases de datos de tu hosting, tienes que hacer una copia de seguridad de tu web. Esto puedes hacerlo con un plugin de backup o directamente con una herramienta como Installatron en tu alojamiento web.

plugin copia de seguridad wordpress

No le voy a dar más vueltas al asunto: vamos con la teoría.

Icono suscripción Newsletter

¿Quieres
recibir mis articulos?

No te pierdas todos mis trucos para WordPress, CMS, Marketing Digital y WPO.

RESPONSABLE:

RAIOLA NETWORKS, S.L.

C.I.F.: B27453489

Avda de Magoi, 66, Semisótano, Dcha., 27002 Lugo (Lugo)

Telefono: +34 982776081

e-mail: info@raiolanetworks.es

FINALIDAD:Atender solicitudes de información, ejecución de la contratación de servicios y remisión de comunicaciones comerciales.
LEGITIMACIÓN:Consentimiento del interesado y contratación de productos y/o servicios del Responsable
DESTINATARIOS:

No se ceden datos a terceros, salvo obligación legal.

Personas físicas o jurídicas directamente relacionadas con el Responsable

Encargados de Tratamiento adheridos al Privacy Shield

DERECHOS:Acceder, rectificar y suprimir los datos, portabilidad de los datos, limitación u oposición a su tratamiento, derecho a no ser objeto de decisiones automatizadas, así como a obtener información clara y transparente sobre el tratamiento de sus datos.
INFORMACIÓN ADICIONAL:Se puede consultar la política de privacidad de forma más detallada aquí.

 

Limpieza de tablas de la base de datos de WordPress

En las tablas guardamos toda la información que se guarda en las bases de datos. Digamos que es una forma de organizar la información.

Un WordPress, de forma nativa, tiene 12 tablas. Sin embargo, al instalar plugins el número de tablas va aumentando y es normal encontrarse tiendas online WooCommerce con más de 100 tablas, algunas de ellas muy pesadas.

Pero vamos a ir a lo que nos interesa.

¿Cómo podemos limpiar las tablas de la base de datos?

Básicamente, podemos hacer 2 cosas: eliminar tablas de plugins (o themes) que ya no están instalados y, por otro lado, realizar el procedimiento de optimización nativo de MySQL para que se borren definitivamente.

¿Qué conseguimos limpiando las tablas de la base de datos de WordPress?

Limpiando tablas vamos a simplificar la base de datos para que ocupe menos espacio. Así, los backups serán mucho más rápidos y, al simplificar, evitaremos problemas. Puede parecer una tontería, pero no es el primer sitio web de un cliente que, tras limpiar la base de datos, baja de 10GB a 200 MB.

Ahora, vamos con la práctica.

Por si no quieres seguir la guía en texto, te dejo un vídeo para que veas cómo limpiar las tablas de la base de datos de WordPress y tener una base de datos limpia. Ten en cuenta que en vídeo siempre puedo detallar mucho más que escribiendo:

 

Con el plugin WP Database Tools instalado y activado, nos vamos a la pestaña de “Tablas”:

plugin base de datos de tu wordpress

La interfaz de WP Database Tools está en constante mejora. Vamos adaptándonos a las nuevas funcionalidades que vamos incluyendo en el plugin.

En la parte de arriba tenemos los filtros avanzados, que nos permiten filtrar por plugins o themes activos, inactivos o desinstalados, aunque también hay la opción de “Desconocido” para datos no reconocidos.

plugin base de datos de tu wordpress

Además, también permite filtrar las tablas por categorías, basándonos en sí pertenecen a un plugin, a un theme o al núcleo de WordPress. Evidentemente, también hay una categoría “Sin categoría” para tablas de las que no encuentra datos WP Database Tools.

Después de instalar y activar el plugin, al acceder al panel se realiza el primer análisis. En caso de no haberse realizado, podemos usar el botón “Escanear”:

plugin base de datos de tu wordpress

Recuerda que el análisis puede tardar más o menos tiempo dependiendo del tamaño de la base de datos de tu sitio web. En instalaciones muy grandes podemos hablar de incluso más de 15 minutos, ya que, además de analizar las tablas, también analiza los options y los cronjobs.

Si nos vamos a “Desinstalado” podemos ver tablas de los plugins que ya no están instalados en nuestro WordPress, pero que siguen ocupando espacio en nuestro alojamiento web.

copia de seguridad plugin

Aunque también hay casos como el de la captura anterior, que es una tabla que ha sido utilizada por dos plugins (RankMath y el Redirections by Rank Math) y, por lo tanto, debemos tener mucho cuidado si la vamos a borrar y siempre comprobar bien lo que vamos a borrar.
Otro ejemplo son los datos que introducimos con ACF en ciertas partes de la DB de WordPress, que pueden parecer basura de un plugin, pero realmente, en la práctica, no pertenecen a ningún plugin, son simplemente custom-fields.

Después de ejecutar el proceso de limpieza de tablas, debemos realizar el proceso de optimización de las mismas. Para esto, debemos seleccionarlas todas y pulsar en “Optimizar”:

limpiar db wordpress

Con esto, empezaremos a tener la base de datos limpia. Al menos, la parte de las tablas en general.

Si buscas más instrucciones para reconocer qué tablas borrar y cuáles no, te sugiero que te veas el vídeo que he dejado al principio de esta sección, ya que es mucho más “instructivo” y me puedo extender más que escribiendo.

Y recuerda: si has borrado algo que no debías, la única forma de recuperarlo es con una copia de seguridad.

 

Limpieza de options de la base de datos de WordPress

Antes de nada quiero comentar que, mientras que la limpieza de tablas simplemente hace que las copias de seguridad y dumps de la DB vayan más rápido y nos simplifica la base de datos, en el caso de los options la cosa cambia.

Los options se encuentran dentro de la tabla de wp_options en la base de datos de WordPress.

Dentro de la tabla wp_options nos encontramos tres elementos:

  • Opciones de plugins, del theme y del núcleo de WordPress.
  • Transients (si no sabes lo que son, mírate este vídeo en mi canal de Youtube).
  • Autoloads, que son opciones con el parámetro autoload para cargarse con cada “hit”.

Y ahora vamos a entender qué limpiamos en cada uno de los tres casos:

  • Al limpiar opciones, tratamos de limpiar filas de las tablas wp_options que han sido insertadas por plugins o themes que ya no están activados. Y precisamente este es uno de los puntos fuertes de WP Database Tools, ya que detecta a quién corresponden.
  • Al borrar transients expirados hacemos que la tabla wp_options sea más simple y, en muchos casos, podemos resolver micro-conflictos. En algunos casos, puede ser necesario borrarlos TODOS para resolver algún problema.
  • Al borrar filas del wp_options con parámetro autoload mejoramos el rendimiento en webs complejas, puesto que todas las filas con parámetro autoloads se cargan con cada visita no cacheada.

En cualquier caso, cualquier optimización o limpieza que hagamos en la tabla wp_options en base de datos de WordPress impacta directamente en el rendimiento de la web. El motivo es que se simplifica su tamaño y, por lo tanto, la query para obtener todas las filas con parámetros autoload será mucho más rápida y consumirá muchos menos recursos en MySQL/MariaDB.

En cuanto a limpiar la tabla wp_options con WP Database Tools, en “Options” tenemos una interfaz muy similar a la que vimos en la sección anterior de tablas:

plugins wordpress hosting limpiar la base de datos

La parte de arriba, que he marcado en la imagen anterior, es exactamente igual que en “Tablas”, pero se añaden los filtros de “Autoload”.

En este caso, como hay muchos más factores que en el caso de las tablas, te explico los “extras” en un vídeo:

Siento no haber descrito el proceso de limpieza de options escribiéndolo, pero es demasiado complejo y tiene demasiadas variables como para hacerlo.

Es importante que sepas que, en el sidebar de la derecha del plugin, tenemos un tamaño de estimación de los autoloads y en un futuro también saldrán los transients.

plugins limpieza de la base de datos de WordPress

El tamaño de autoloads es el tamaño de la query realizada con cada visita sin cachear o hit por WordPress a la base de datos. Si bajamos ese tamaño, conseguiremos acelerar y mejorar el rendimiento de nuestro WordPress.

Mediante WP Database Tools podemos desactivar el parámetro “autoload” para cada fila del wp_options que nosotros queramos, pero esto no lo puede hacer cualquiera: es necesario estar muy seguros de lo que estamos haciendo.

Editar autoload wordpress

En cualquier caso, ten en cuenta que obtendremos un mayor rendimiento cuanto más pequeña sea la tabla wp_options y también cuantas menos filas tengan el parámetro autoload.

Sin embargo, tampoco debemos obsesionarnos con esto. En la mayoría de los casos, se consigue bastante simplemente limpiando todas las filas huérfanas de plugins y themes antiguos que van quedando en la base de datos de WordPress.

 

Limpieza de CRONs huérfanos en el wp-cron

Aunque esto no es directamente una limpieza en la base de datos, limpiar CRONs (cronjobs) huérfanos limpia una fila de la tabla wp_options y evita que tareas programadas huérfanas que aún siguen registradas en WordPress hagan consultas en la base de datos.

Si quieres saber más en detalle lo que es el WP-CRON (wp-cron.php) de WordPress, puedes consultar el siguiente post en este blog: https://alvarofontela.com/wp-cron-php-wordpress-configurar-desactivar/

Y aquí vuelvo a decir lo mismo que en “Tablas”, si queréis ver el proceso en vídeo en lugar de escrito, os dejo un vídeo de mi canal de Youtube:

En WP Database Tools, vamos a la sección “CronJobs” y podremos ver esto:

limpiar la base de datos de wordpress

A nivel de interfaz se comparten bastantes elementos con las otras dos secciones comentadas en este post y el funcionamiento es exactamente igual que en el caso de las tablas.

Podemos utilizar los filtros para detectar cronjobs huérfanos del plugins o themes desinstalados o simplemente inactivos:

plugins limpieza de la base de datos de wordpress

Limpiar los cronjobs no tiene mucha ciencia. Simplemente, vamos a la pestaña de desinstalados y nos cargamos los cronjobs huérfanos de plugins y themes que han sido desinstalados.

 

Limpieza general, lo que tienen todos los plugins de limpieza

Esto no iba ni a explicarlo, ya que es algo que no es exclusivo de WP Database Tools, sino que esto lo tienen hasta plugins que no tienen nada que ver con la base de datos, como Perfmatters.

base de datos plugin wordpress

En “General” podemos ver una serie de “tweaks” que nos permiten borrar algunas cosas muy comunes en WordPress de forma que conseguiremos limpiar algo la base de datos (pero tampoco mucho):

  • Revisiones, o lo que es lo mismo, los puntos de guardado automáticos hechos por el editor de WordPress.
  • Autoborradores, es decir, borradores automáticos guardados en ciertos momentos por el editor de WordPress (no es lo mismo que las revisiones).
  • Posts en papelera, es decir, los contenidos que aún siguen en la papelera de WordPress tras ser borrados.
  • Comentarios pendientes.
  • Comentarios marcados como SPAM (a mí esto me gusta borrarlo directamente).
  • Comentarios en la papelera, es decir, que previamente han sido borrados.
  • Pingbacks.
  • Trackbacks.
  • Huérfanos en postmeta, es decir, datos huérfanos de la tabla wp_postmeta que ya no pertenecen a ningún contenido de wp_posts.
  • Huérfanos de commentmeta, es decir, datos huérfanos de la tabla wp_commentmeta que ya no pertenecen a ningún contenido de wp_comments.
  • Huérfanos de usermeta, es decir, datos huerfanos de la tabla wp_usermeta que ya no pertenecen a ningún contenido de wp_users.
  • Huérfanos de termmeta, es decir, datos huerfanos de la tabla wp_termmeta que ya no pertenecen a ningún contenido de wp_term.
  • Relaciones huérfanas, es decir, datos huérfanos en la tabla wp_term_relationships que enlazan datos de wp_posts con wp_term.
  • Transients expirados que, si los reconoce el plugin, es que el sistema de purgado de transients expirados de WordPress ha fallado (pasa algunas veces).

Con esta explicación, ya verás para qué sirve cada uno y ya es cosa tuya si marcarlo o no.

Hay cosas como los huérfanos o los transients expirados que no vas a tener ningún problema al borrarlos pero, dependiendo de cada caso, igual no quieres borrar los comentarios pendientes.

Lo que deja hacer es seleccionar un margen de días. Por ejemplo, podemos hacer que no se borren los datos de los últimos 30 días:

base de datos limpia

Esta sección de WP Database Tools no tiene más ciencia, es simple. Permite borrar datos que se suelen quedar en las bases de datos y que, en algunos casos, como las revisiones y los borradores automáticos, pueden darnos bastantes problemas en webs muy grandes con mucho contenido.

 

Limpieza de transients de WordPress

Los transients son un arma de doble filo en WordPress. Por un lado, ayudan mucho al rendimiento de instalaciones complejas; por otro, pueden dar muchos problemas, hasta llegar al punto que en algunos casos purgando TODOS los transients de la instalación solucionamos fallos.

Para explicarte lo que son los transients de WordPress de forma detallada, te dejo este vídeo de mi canal de Youtube:

Esta ha sido la última funcionalidad que hemos añadido a WP Database Tools y soy consciente de que, además, puede ser una de las más complejas de utilizar.

Al igual que en el caso de las tablas, los options y los cronjobs, en los transients también tenemos una tabla que nos dice a qué plugin o theme pertenece cada transient. El problema es que el motor de detección no es tan efectivo en este caso, ya que muchos transients incluyen un hash en el propio nombre del transient y no en el valor:

transients base de datos wordpress

A nivel de interfaz no hay nada que explicar por qué los elementos son exactamente los mismos que en los otros casos. Incluso vamos a poder ver qué transients llevan el parámetro autoload, es decir, qué transients penalizan la carga de cada página de nuestro sitio web.

A continuación, te explico cómo trabajar con el plugin WP Database Tools para limpiar los transients de la base de datos de WordPress:

Como en cada proceso complejo que realizamos en WordPress, recuerda que debes realizar una copia de seguridad antes de hacer nada.
Manipular bases de datos o limpiar la base de datos de WordPress es algo complejo y podemos llegar a perder nuestro sitio web.

 

Purgado general de transients en WordPress

En algunas ocasiones, para solucionar problemas en WordPress es necesario purgar los transients creados por plugins y themes.

Al borrarlos, puede que la primera carga de la web después de esta sea más lenta, pero hay conflictos que quedarán solucionados. Personalmente, cada vez que me toca limpiar la base de datos de WordPress, también purgo los transients.

Con WP Database Tools puedes purgar todos los transients desde aquí:

base de datos plugin datos borrar transients

Con la interfaz de WP Database Tools puedes filtrar por plugin o theme y borrar solo los transients que le pertenecen. Ten en cuenta que el motor de detección es mucho menos eficiente para los transients, debido a lo que comentamos antes de los hash en el nombre del transient.

Tal vez te interese...

Picture of Álvaro Fontela
Álvaro Fontela
Soy ponente en congresos de marketing digital, consultor WordPress, ademas de CEO y co-fundador de Raiola Networks, amante del mundo del motor (coches japoneses) y tecnófilo empedernido.
Picture of Álvaro Fontela
Álvaro Fontela
Soy ponente en congresos de marketing digital, consultor WordPress, ademas de CEO y co-fundador de Raiola Networks, amante del mundo del motor (coches japoneses) y tecnófilo empedernido.

6 Responses

  1. Buen post! Algo que me parece importante y que detecté y corregí gracias al plugin litespeed-cache es el tipo de motor de las tablas. Algunas de las mías eran myisam y gracias a este plug-in pude convertirlas en innodb, que se supone es mucho más eficiente… 😅

    1. Si, actualmente sobretodo en instalaciones que tiran mucho de DB, suele ayudar cambiar de MyISAM a InnoDB.

      Las instalaciones actuales ya se instalan todas con InnoDB.

  2. Hola Álvaro.
    ¿Cómo estás? Espero que muy bien.
    Felicitarte por el tutorial del plugin Advanced Database Cleaner para WordPress, está brutal.
    Quería hacerte una pequeña consulta, entonces los “Orphaned post meta” del General clean-up se pueden borrar sin ningún peoblema. ¿No?
    Gracias por todo lo que aportas.
    Saludos

    1. Hola Ricardo, te pongo lo mismo que en Youtube.

      Los «Orphaned post meta» pueden borrarse en el 99% de los casos. Puede haber algún plugin raro que los use, pero en todo caso estaría funcionando por fuera del núcleo de WP y por lo tanto es difícil saber como actuar.

    1. Hola Marcos, en ese post lo único que dice es que los datos no son exactos, pero…yo de esos datos me fio 0. De hecho, en mi academia explico como hacerlo manualmente, sin fiarse de esos datos.

      Hace unos meses, le hablé al autor de Advanced Database Cleaner para ofrecerle mi ayuda con la base de datos, y la rechazo.

      Es posible que en breves, en Raiola Networks, saquemos un plugin para esto.

      Yo llevo años usando Advanced Database Cleaner Pro para esto, pero claro, no le hago caso a los datos porque a veces son “salvajadas” lo que saca.

      Entonces te preguntaras tu…¿de que sirve la version Pro? Pues para usar los filtrados, que sino al limpiar una instalacion muy grande, puedes acabar haciendo un trabajo de chinos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Artículos destacados

wp-config.php de WordPress

Copias de seguridad en WordPress

wp-cron.php de WordPress

Elementor Forms de Elementor Pro

Optimizar la carga de JavaScript y CSS en WordPress

Desinfectar un WordPress hackeado

Artículos más comentados

TPV o POS en WooCommerce

Elementor Forms de Elementor Pro

Entendiendo la DB de WordPress

WP Rocket para acelerar WordPress con cache de página

Copias de seguridad en WordPress

WebP en WordPress