Es sabido que WordPress es uno de los CMS mas usados en la web, pero, no por eso deja de ser un salvaje devorador de recursos, y que si el hosting que estas usando no es muy bueno y/o no está bien optimizado, puede traer dificultades con el tiempo. Optimizar base de datos wordpress puede prevenir errores o fallos catastroficos a futuro, si bien es cierto que las bases de datos MySQL, son una plataforma solida, es importante hacerles su debido mantenimiento.
Cuando escribimos un post, este es guardado en la base de datos. Allí estará guardado a la espera que alguien nos visite: cuando alguien ingresa al blog en WordPress, se desencadena una serie de acciones del PHP para poder mostrarnos la información guardada en MySQL.
Si eres de modificar mucho tu blog, borrar muchos comentarios, escribir muchos post, editar, borrar post, instalar plugins que usen la base de datos, o utilizas plugins de estadísticas en tu WordPress; seguramente luego de esto podrás ahorrar unos 2Mb de espacio en la base de datos, esto se debe a que ‘optimizar una base de datos’ elimina la información que no sirve y ‘comprime’ otra. No es solo el hecho de eliminar 2Mb de información muerta, es mas bien el que esa informacion molesta y puede acarrear problemas.
Si eres alguien que sabe de esto, dirás: este tipo esta escribiendo pendejadas, pero, intento explicarlo facil, ¿vale?. Continuemos.
WordPress, no siempre borra toda la información: si eliminamos un post, este dejará de mostrarse, pero es posible que siga escrito en la base de datos. Así también con los comentarios. Hay ciertos plugins que usan la base de datos los cuales aveces estan mal optimizados y pueden molestar; también cuando uno los desactiva o borra (mediante el ftp), hay que tener en cuenta que no se borró lo que había en la base de datos, hay que hacerlo manualmente.
¿Como se puede optimizar WordPress desde la base de datos?
Primero que nada, es necesario hacer tareas de mantenimiento en el blog: eliminar la cola de spam en Askimet, borrar los comentarios que esten para moderar (o aprobarlos, segun corresponda), borrar post y páginas, desistalar plugins, etc.
Una vez que hicimos todo eso, te listo unas formas de hacer la optimizacion, pero, antes que nada recomiendo hacer un backup.
Optimización Manual
Vamos a ir a nuesto PHPMyAdmin (o servidor de SQL), preguntalé a tu proveedor de hosting como acceder a el. Una vez allí, vamos a seleccionar la base de datos correspondiente, y vamos a ver una lista de ‘tablas’. Vamos a ir abajo de todo y hacer click en “seleccionar todas”. Luego, buscaremos la opción ‘optimizar’ (fijate en el menú desplegable).
Este proceso, puede durar varios minutos, por lo que no es recomendable que cierres el explorador y evites perder la conexion.
La opción fácil, es usar plugins:
WP-Optimize: es simple, fácil y rápido. Nos evita hacer el trabajo a mano, muestra el tamaño de cada tabla y cuanto puede optimizarse. Funciona a un simple click.
DB-Manager: optimiza y tambien tiene otras funciones como hacer backup, reparar, etc.
Por consola SSH
Puedes optimizar las tablas que se ven afectadas por la sobrecarga con el uso del comando SQL “OPTIMIZE TABLE”. Por ejemplo, se puede optimizar la tabla wp_posts mediante la ejecución de esta consulta SQL:
OPTIMIZE TABLE 'wp_posts'
Reparar la tabla cn la herramienta de wordpress
Otra opción útil que debes tener en cuenta para el futuro es “Reparar la tabla”. Reparación de una tabla ayuda a reparar una tabla que ha sido dañada.
WordPress tiene una herramienta que permite reparar y optimizar la base de datos.
Para utilizar la herramienta de optimización, primero tienes que añadir esta línea a tu archivo wp-config.php del sitio web.
define ('WP_ALLOW_REPAIR', true);
Una vez que has agregado la línea anterior a wp-config.php y guardado el archivo, puedes acceder a la herramienta de optimización en http://www.tusitioweb.com/wp-admin/maint/repair.php.
La herramienta de optimización intentará reparar cada tabla de la base de datos. De vez en cuando, el script puede no ser capaz de reparar ciertas tablas.
Si no reparas con éxito la base de datos en el primer intento, sólo tienes que ejecutar la herramienta de optimización de nuevo.
Si seleccionas “reparar y optimizar la base de datos”, WordPress optimizará cada tabla que no se ha optimizado.
No es necesario estar conectado para ejecutar la herramienta de optimización de WordPress. La desventaja de esto es que cualquier persona puede tener acceso al script y ejecutarlo. Debido a esto, es necesario eliminar la línea WP_ALLOW_REPAIR del archivo wp-config.php después de haber utilizado la herramienta de optimización.
Quitar peso de la base de datos de WordPress
La mayoría de las bases de datos de WordPress almacenan una gran cantidad de datos innecesarios. Esta carga adicional hace que los sitios web sean más lentos y menos eficientes.
Hay una serie de cosas que se suman a engordar la base de datos web. Sin embargo, siguiendo las buenas prácticas, se puede reducir en gran medida la carga, o incluso eliminar la por completo del sitio web.
Echemos un vistazo a las principales causas de esta carga adicional, en una base de datos de WordPress:
Las revisiones
El sistema de revisión de WordPress hace que muchas bases de datos de WordPress sean innecesariamente grandes. Presentado por primera vez en WordPress 2.6, la función almacena una copia de cada proyecto y la actualización del blog. Es una función muy útil, ya que permite volver a las copias más antiguas de artículos y comprobar los primeros borradores.
Desafortunadamente, WordPress no pone ninguna limitación en el número de revisiones que se guardan. Si estamos trabajando en un artículo largo, esto podría resultar en cientos de revisiones que se guardan. A pesar de que el artículo publicado sólo ocupará una fila en la base de datos, las revisiones correspondientes podrían utilizar decenas o cientos de filas en la base de datos.
Afortunadamente, WordPress le permite reducir fácilmente el número de revisiones que se almacenan. Para reducir el número de revisiones que se guardan, sólo tienes que añadir el siguiente código a tu archivo wp-config.php.
define ('WP_POST_REVISIONS', 2);
Las revisiones pueden ser completamente desactivadas añadiendo el siguiente código a tu archivo wp-config.php.
define ('WP_POST_REVISIONS', false);
Yo aconsejaría no desactivar las revisiones completamente, ya que se elimina el sistema de seguridad que proporcionan las revisiones cuando cuando algo falla. Por lo tanto, en caso de que cierres el navegador por error o perdemos la conexión a Internet, se puede perder todo lo el trabajo desde el último borrador de tu proyecto.
También me gustaría hablar brevemente sobre autosaves. La función de copia de seguridad automática de WordPress que guarda una copia de seguridad automática de un artículo cada 60 segundos. Este intervalo se puede cambiar añadiendo el siguiente código al archivo wp-config.php.
define( 'AUTOSAVE_INTERVAL', 160 ); // Seconds
Una gran cantidad de bloggers han desaconsejado autosaves pues comentan que guardan varias copias de sus entradas y las páginas. Eso simplemente no es verdad. Autosave sólo guarda una copia de un artículo y no utiliza mucho espacio en la base de datos.
La función de copia de seguridad automática es una importante acción de seguridad que ayudará si perdemos la conexión a Internet o cerramos el navegador por error. La función no utiliza mucho espacio en nuestra base de datos; Por lo tanto, os animo a mantenerla activa.
Comentarios Spam
Si nuestro sitio web recibe una gran cantidad de correo no deseado, es posible que los comentarios spam están tomando una gran cantidad de espacio en la base de datos. De forma predeterminada, los comentarios de spam se eliminan automáticamente después de 30 días, sin embargo, durante ese tiempo pueden ocupar cientos o incluso miles de filas de la tabla wp_coments.
Un buena acción anti-spam puede detener muchos spammers de manera que el volumen de estos se reduzca.
Akismet es una buena solución, ya que permite descartar el spam que es obvio para que el comentario se elimine de la base de datos de inmediato (aunque hay que ser consciente de que comentarios legítimos podrían ser borrados de forma automática).
Dentro de la administración de comentarios de WordPress añade un botón para eliminar los comentarios no deseados que permite eliminar de forma permanente todos los comentarios de spam al instante.
Los spammers suelen apuntar a los artículos más antiguos que tienen una buena clasificación en los motores de búsqueda. Por tanto, puedes reducir la cantidad de correo no deseado que tu sitio web recibe considerablemente mediante la desactivación de los comentarios sobre los artículos que son más viejos para un número determinado de días. Este ajuste se encuentra en la sección de Ajustes > Comentarios en el área de administración de WordPress.
Comentarios de spam también se pueden eliminar con el comando SQL siguiente.
DELETE FROM wp_comments WHERE comment_approved = 'spam'
Todos los comentarios pendientes de aprobación se pueden eliminar mediante el siguiente comando SQL.
DELETE FROM wp_comments WHERE comment_approved = '0'
Desde ahora se puede eliminar todo el spam utilizando el botón “Vaciar Spam” que aparece en la página de comentarios spam. No hay ningún beneficio real para el uso de una consulta SQL para eliminar el spam de la base de datos.
WordPress Transitorios
WordPress Transitorios ofrece a los desarrolladores una forma de almacenar datos de forma temporal en la base de datos de WordPress. Registros transitorios se almacenan en la tabla de opciones de WordPress.
Los registros transitorios caducados pueden añadir hinchazón de una base de datos y hacer que el sitio web funcione más lento. Hay una serie de plugins que ayudan a administrar los transitorios y eliminar registros vencidos que ya no son necesarios.
El plugin de WordPress Transient Cleaner tiene una opción para eliminar los transitorios expirados y eliminar todos en general. Delete Expired Transients ofrece la funcionalidad de configurar una tarea diaria para eliminar los transitorios caducados.
Transients Manager es una de las mejores soluciones para la visualización de los transitorios. Se nos permite ver, editar y eliminar los transitorios. Sin embargo, el plugin no tiene ninguna una opción para borrar en masa los transitorios caducados.
Los transitorios no son algo para preocuparse sobre una base regular, sin embargo vale la pena revisar periódicamente para verificar que no están afectando el rendimiento.
No dejar tablas del los Plugins y Temas eliminados
El 99% de todos los ajustes de plugins de WordPress almacenan los datos en la base de datos de WordPress. Por desgracia, al desinstalar un plugin de WordPress, no se elimina esta información.
Esto es así por diseño. Si los datos se eliminan cada vez que ha desactivado un plugin, tendrías que configurar el plugin de nuevo cuando fuese reactivado. También perderías los informes o contenidos que el plugin genera.
Sin embargo, si hemos decidido dejar de usar un plugin, o si estuviera simplemente probando un plugin, tendrá que eliminar todos los datos al desinstalar el plugin. Un pequeño número de plugins de WordPress incluye una opción en nuestra página de ajustes para eliminar todos los datos, aunque la mayoría de los plugins no tienen esta opción.
Debido a esto, las bases de datos de WordPress pueden acumular una gran cantidad de hinchazón adicional en el tiempo. No es raro que una base de datos de WordPress contenga docenas de tablas de plugins que fueron retirados hace meses, o incluso hace años.
Los temas de WordPress también almacenan la configuración en la base de datos de WordPress y estos ajustes se mantendrán en la base de datos al cambiar de temas.
Las tablas no utilizadas se pueden eliminar de una base de datos de forma manual o a través de una herramienta de gestión de base de datos como phpMyAdmin. Sin embargo, incluso si tenemos una buena comprensión de las 11 tablas de WordPress principales, nos resultará difícil distinguir tablas de plugins instalados de tablas de plugins no instalados.
Un plugin útil para ayudarte con esto es WPDBSpringClean. El plugin identificará las tablas no utilizadas de los plugins no instalados y nos dará la opción de borrarlas. Otro plugin que puede hacer este trabajo es el Garbage Collector