Cuando tu web WordPress crece en contenidos y tráfico, tu base de datos crece con ella, aumentando su tamaño y, en ocasiones, ralentizando los procesos de tu web si no está optimizada.
Ya vimos que una de las tablas más problemáticas, debido al Autoload, suele ser la tabla options
de tu base de datos, y cómo optimizarla mediante índices, pero resulta que este problema puede extenderse a otras tablas de tu base de datos, que también conviene analizar y, en su caso, optimizar.
El problema
Todos los sistemas de administración de bases de datos relacionales almacenan su información en tablas de larga duración . Por ejemplo, WordPress almacena sus publicaciones y otros contenidos en una tabla llamada wp_posts
y los campos de contenido personalizados en otra tabla llamada wp_postmeta
.
Un sitio con éxito puede tener miles de publicaciones y cientos de miles de campos de publicación personalizados, con lo que MySQL tiene dos trabajos:
- Mantener todos esos datos organizados.
- Encontrar los datos que necesita rápidamente.
Para hacer la segunda tarea, MySQL usa claves de bases de datos. Cada tabla tiene una o más claves. Por ejemplo, wp_posts
tiene una clave que le permite encontrar rápidamente publicaciones cuando sabe el autor. Sin la clave post_author
, MySQL tendría que revisar todas y cada una de tus publicaciones en busca de coincidencias con el autor para el que se desea hacer la consulta.
¿A que sabes cómo funciona esto?: Muuy lento.
Mediante claves, MySQL puede saltar directamente a las publicaciones correspondientes, acelerando mucho las consultas.
En un nuevo sitio WordPress, con un par de usuarios y una docena de publicaciones, las claves no importan mucho. Pero a medida que el sitio crece, las claves empiezan a importar, y mucho.
¿Romperé algo?
Los sistemas de administración de bases de datos están diseñados para que sus claves se actualicen, ajusten y modifiquen a medida que crecen sus tablas. Están diseñados para permitir que las claves evolucionen sin cambiar el contenido de las tablas subyacentes.
En organizaciones con grandes bases de datos, añadir, eliminar o modificar claves no cambia los datos subyacentes. Es una tarea de mantenimiento de rutina en la mayoría de los centros de datos.
Y no te preocupes por las consecuencias de estas operaciones, si cambiar las claves hiciera que las bases de datos perdieran datos, los desarrolladores de MySQL y MariaDB escucharían aullidos no solo tuyos y míos, sino de muchos usuarios importantes. Lo que no quita para que SIEMPRE hagas copia de seguridad antes de tocar nada en una base de datos ¡EH!
Un haiku para MySQL
Resumiendo: Unas buenas claves (índices) permiten que el código de WordPress se ejecute más rápido sin ningún cambio de programación. La experiencia con sitios grandes muestra que muchas ralentizaciones de MySQL pueden mejorarse usando mejores claves.
El código es poesía, los datos son un tesoro y las claves de la base de datos son grasa que hace que el código y los datos funcionen juntos sin problemas #WordPress
Clic para tuitear
«Mi» solución
Pues, como podrás imaginar, esta tarea es una de las habituales que suelo realizar para mis clientes del servicio de mantenimiento de webs WordPress, y para ello me suelo ayudar siempre de una joya de plugin, que facilita y acelera mucho la tarea, me refiero a Index WP MySQL for Speed.
Quizás si solo tienes una web o dos prefieras analizar y optimizar el rendimiento de tus bases de datos de manera más manual, pero cuando gestionas muchas webs, y especialmente si son de un tamaño considerable, toda ayuda es poca, y este plugin es una ayuda inmejorable.
Dicho esto, el plugin tiene 2 funcionalidades principales:
- Supervisión de operaciones de la base de datos – Esta herramienta te permite analizar qué tablas de tu base de datos necesitan ser optimizadas.
- Creación de claves de alto rendimiento, o índices – Es la funcionalidad con la que se crean los índices de tablas de la base de datos, para mejorar su rendimiento.
Nada más instalar el plugin te anima a crear las claves de alto rendimiento…
No obstante, mi consejo es que antes te pases por la pestaña de supervisión de operaciones de la base de datos, en la sección de ajustes del plugin.
Supervisar operaciones de la base de datos
Esta utilidad te permite analizar qué tablas de tu base de datos podrían necesitar optimización.
Aquí podrás elegir si analizar las operaciones de escritorio (administración), el sitio (la web) o ambas, durante un tiempo determinado, en el que te recomienda que te muevas por la web y la administración para que el plugin analice si hay operaciones más lentas de lo deseable y, en consecuencia, hay tablas involucradas en esas operaciones que necesiten optimizarse.
Es importante, aunque para ti no sea lo más cómodo, que realices la supervisión durante los periodos en que tu web tenga más actividad y tráfico, para que la supervisión analice una situación de altos requisitos de consumo de la base de datos.
Así que, elige qué analizar (escritorio y/o sitio), el tiempo de supervisión (en minutos) y si quieres capturar (guardar para posterior revisión) todas las páginas vistas durante el tiempo de supervisión o solo un muestreo de un porcentaje de ellas.
Pulsa el botón de «Empezar la supervisión» y empieza a interactuar con tu web y/o escritorio durante ese tiempo definido. La supervisión se para por sí sola, no tienes que pulsar ningún otro botón.
Mientras estés navegando por tu escritorio y la web se mostrará un aviso de que la supervisión está activa y cuándo termina.
Al terminar, pásate de nuevo por los ajustes del plugin Index WP MySQL for Speed y verás, en la pestaña del supervisor, que hay un aviso con enlace a la(s) supervisión(es) guardada(s).
Desde ahí puedes visitar la supervisión guardada mediante un enlace, o borrarla mediante el icono a su izquierda, una vez revisada. También la encontrarás en una nueva pestaña, con el nombre que le pusiste antes de empezarla.
En esta pantalla tienes un montón de información valiosa, y alguna herramienta:
- Resumen de la supervisión, con detalles de tu base de datos, consumo de recursos, consultas realizadas y versiones.
- Una herramienta con la que compartir (subir) el resultado de la supervisión a los servidores de los autores del plugin, pues con estas supervisiones aprenden para mejorar el plugin en nuevas versiones.
- Botón para guardar la supervisión como archivo CSV.
- Tabla detallada de cada una de las operaciones realizadas durante la supervisión y el resultado de consultas, tiempo empleado, recursos utilizados, patrones de consulta y rendimiento de cada. una de las tablas y argumentos.
De esta tabla es de dónde debemos sacar conclusiones a la hora de decidir qué tablas necesitan optimizarse mediante la creación de claves de alto rendimiento (índices).
Cuando hayas terminado la supervisión, y determinado qué tablas necesitan optimizarse añadiendo claves de alto rendimiento (índices), ya puedes pasarte por la pestaña específica para crear las claves.
Añadir claves de alto rendimiento (índices) a tablas lentas
Es importante que marques la casilla de que has hecho una copia de seguridad de la base de datos, y que realmente hayas hecho una copia de seguridad, antes de empezar la optimización, antes de crear las claves. Es obligatorio marcar la casilla, y puedes engañar al plugin, pero en realidad te estarás engañando a ti.
Hecho esto, selecciona a qué tablas de WordPress (el plugin solo añade índices a las tablas nativas) quieres añadir las claves de alto rendimiento.
El proceso, salvo tablas muy grandes, es rápido, y el plugin enseguida te mostrará el resultado de la operación.
¡Y ya habrías terminado!
Pues sí, y ya podrías desinstalar y borrar el plugin, pero aún te permite hacer algunas cosas más, pues desde esta misma pantalla puedes:
- Convertir claves – Convertir índices estándar existentes a las claves de alto rendimiento del plugin.
- Revertir claves – Devolver las tablas de WordPress optimizadas a la situación por defecto, sin índices (claves de alto rendimiento).
¿Puedo usar WP-CLI?
De hecho, si la web a optimizar tiene tablas muy grandes es lo más conveniente, y para ello el plugin ofrece varios comandos exclusivos:
wp help index-mysql
– para obtener el listado de comandos y más detalleswp index-mysql status
– muestra el estado actual de las claves de alto rendimiento.wp index-mysql enable --all
– añade las claves de alto rendimiento a todas las tablas que no las tienen.wp index-mysql enable wp_postmeta
– añade las claves de alto rendimiento a la tablapostmeta
.wp index-mysql disable --all
– elimina las claves de alto rendimiento de todas las tablas que las tienen, restaura las claves por defecto de WordPress.wp index-mysql enable --all --dryrun
– escribe las instrucciones SQL necesarias para agregar las claves de alto rendimiento a todas las tablas, pero no las ejecuta.wp index-mysql enable --all --dryrun | wp db query
– escribe las instrucciones SQL y las canaliza a la BD de WP para ejecutarlas.
Nota: procura guardar las instrucciones de salida
–dryrun
para ejecutarlas más tarde. El plugin las genera para que coincidan con el estado actual de tus tablas.
Para qué no sirve este plugin
Este plugin crea claves de alto rendimiento, o índices, a las tablas de la base de datos de WordPress, y solo eso, que no es poco, pero no sirve para otras optimizaciones de la base de datos y sus consultas:
- Caché de objetos persistente – Este tipo de caché acelera mucho las consultas a la base de datos, almacenando en caché las más habituales, pero este plugin no es un plugin de caché, necesitarás que te la activen en tu hosting o, si lo administras tú, instalarla por tu cuenta.
- Borrado de datos transitorios y/o tablas y opciones huérfanas – Para eso tienes otros plugins, como WordPress Advanced Database Cleaner Pro, que por un coste ridículo y licencia de por vida, te ayuda a optimizar bases de datos en sitios ilimitados.
Para qué SÍ sirve este plugin
Este plugin añade claves de alto rendimiento a las tablas de la base de datos de WordPress para optimizar las consultas mediante el uso de índices que permitan acceder a los datos de manera más rápida.
Con ello se consigue lo siguiente:
- Reducir los tiempos de las consultas en la base de datos.
- Ahorrarte tiempo a la hora de administrar tu WordPress, haciendo que todas las consultas y operaciones tarden menos en realizarse.
- Ahorrar tiempo y mejorar la experiencia de tus usuarios al visitar tu web y sus contenidos.
- Reducir la huella de carbono de tu web.
Prefiero hacerlo mediante código
Oye, que por mi que no quede, aquí damos soluciones para todos los gustos. El proceso tiene 2 pasos, como expliqué aquí:
- Identificar qué tablas tienen Autoload.
- Crear un índice para las tablas con Autoload grandes.
Para el primer paso ejecuta este comando SQL:
SELECT SUM(LENGTH(option_value)) as autoload_size FROM wp_posts WHERE autoload='yes';
Cambia el nombre de la tabla a analizar en cada caso (en rojo) por la tuya. Si el autoload_size
es mayor de 1000000 bytes necesita optimizarse la tabla.
Para el segundo paso, ejecuta el siguiente comando para cada una de las tablas antes analizadas, con autoload, que sean susceptibles de mejora:
CREATE INDEX autoloadindex ON wp_posts(autoload, option_name);
De nuevo, cambia el nombre de la tabla (en rojo) por la que quieras optimizar añadiendo el índice.
El artículo Cómo identificar y optimizar tablas lentas de la base de datos de WordPress lo publicó Fernando Tellado previamente en Ayuda WordPress. Lo que ves aquí es una copia de dicho contenido :/
0 Commentaires