Rendimiento y monitorización
Optimizar la tabla wp_options y los datos de tipo "autoload"
La tabla wp_options almacena opciones de WordPress, plugins y temas. Algunas se cargan conjuntamente como autoload para evitar búsquedas repetidas. Si ese conjunto crece demasiado, puede aumentar el trabajo de lectura, deserialización y memoria, incluso si utilizas caché de objetos.
No se consulta necesariamente cada opción por separado ni en cada acceso al servidor: WordPress reutiliza el conjunto alloptions, y una caché de página puede evitar ejecutar WordPress por completo.
Medir sin modificar datos
Confirma el prefijo de tu instalación. Los ejemplos usan wp_options; en multisitio debes identificar el sitio y su tabla correspondiente. Desde SQL en phpMyAdmin, calcula número y bytes:
SELECT COUNT(*) AS opciones, COALESCE(SUM(OCTET_LENGTH(option_value)), 0) AS bytes, ROUND(COALESCE(SUM(OCTET_LENGTH(option_value)), 0) / 1024, 2) AS kib FROM wp_options WHERE autoload IN ('yes', 'on', 'auto-on', 'auto');
La consulta incluye los valores que WordPress actual considera autocargados por defecto. Una instalación puede filtrarlos; consulta la función de valores autoload y el comportamiento de tu versión.
Salud del sitio puede avisar si el conjunto supera su umbral, que depende de la versión y filtros. No hay un tamaño universal que garantice un problema: relaciona la medida con memoria y tiempos reales.
Localizar opciones grandes
SELECT option_name, autoload, OCTET_LENGTH(option_value) AS bytes FROM wp_options WHERE autoload IN ('yes', 'on', 'auto-on', 'auto') ORDER BY OCTET_LENGTH(option_value) DESC LIMIT 20;
Empieza por los nombres y tamaños. No necesitas exportar los valores completos para priorizar; pueden contener credenciales o datos de usuarios.
Identifica el plugin o tema responsable buscando el nombre exacto en su código y documentación. Desactivado no significa abandonado: sus datos pueden ser necesarios al reactivarlo. Prueba una limpieza o cambio de autoload sobre un clon y con copia recuperable, utilizando la API de WordPress o la herramienta del componente.
No edites valores serializados ni cambies masivamente todas las opciones a no-autoload. Podrías romper datos o sustituir una carga conjunta por muchas consultas individuales.
Revisar toda la tabla
Si autoload no explica el tamaño, repite la consulta sin el filtro:
SELECT option_name, autoload, OCTET_LENGTH(option_value) AS bytes FROM wp_options ORDER BY OCTET_LENGTH(option_value) DESC LIMIT 20;
Los bytes de valores no incluyen todo el espacio de tabla e índices. Los recuentos que muestra una herramienta para InnoDB pueden ser estimados; utiliza COUNT(*) cuando necesites un recuento exacto, valorando su coste en tablas grandes.
Cron, transitorios y sesiones
Si la opción cron crece, revisa las tareas programadas y el componente que las añade. No borres ni edites su estructura serializada. La guía de WP-Cron explica cómo cambiar el disparador sin detener las tareas necesarias.
Los transitorios tienen una caducidad máxima y pueden desaparecer antes. Según la configuración se guardan en tablas o en caché persistente; no todos se borran justo al alcanzar su fecha. Para inspeccionar sin mostrar valores:
wp transient list --fields=name,expiration
Si has validado la copia y necesitas eliminar los expirados, utiliza wp transient delete --expired. Si reaparecen en exceso, corrige el componente que los genera.
Las filas de sesiones dependen del plugin; no son necesariamente los inicios de sesión estándar de WordPress. Una limpieza genérica por una coincidencia de nombre puede perder carritos o trabajo en curso. Utiliza la retención y herramienta del componente responsable.
Índices y Redis
WordPress ya crea índices en sus tablas. Antes de añadir otro, comprueba los existentes:
SHOW INDEX FROM wp_options;
Revisa el plan de la consulta lenta con EXPLAIN y prueba cualquier índice en un clon. No añadas un índice compuesto solo porque la tabla ocupe mucho: también cuesta espacio y trabajo en cada escritura.
La caché de objetos con Redis puede reducir lecturas repetidas, pero no hace prescindible revisar un conjunto de opciones desproporcionado. Después de cada cambio compara tiempos, memoria, configuración y tareas para verificar que la mejora no ha alterado el funcionamiento.
También te puede ayudar
- Consultas SQL lentas de tipo "SELECT SQL_CALC_FOUND_ROWS" Diagnostica consultas lentas de WordPress con SQL_CALC_FOUND_ROWS, identifica su origen y valida con...
- Consultas SQL para limpiar datos huérfanos y purgar la base de datos de WordPress Limpia datos huérfanos, revisiones y transitorios de WordPress con consultas verificadas, copia recu...
- Diagnosticar consultas LEFT JOIN lentas en WordPress Analiza consultas de taxonomías lentas con LEFT JOIN, compara planes y alternativas en una copia y e...
- Mejora del rendimiento de la base de datos de WordPress con Index WP MySQL For Speed Evalúa índices de WordPress con Index WP MySQL For Speed, revisa los cambios antes de aplicarlos y c...
¿Algo no cuadra o ha cambiado? Cuéntanoslo y lo revisamos.