Rendimiento y monitorización

Optimizar la tabla wp_options y los datos de tipo "autoload"

Revisado el 5 min de lectura wordpress rendimiento base de datos

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

¿Algo no cuadra o ha cambiado? Cuéntanoslo y lo revisamos.