Cómo optimizar y acelerar una base de datos MySQL en WordPress y PrestaShop
¿Por qué tu web va lenta? El problema suele estar en la base de datos
Cuando una tienda online o un blog empieza a ir lento, casi siempre miramos el hosting, la caché o el tamaño de las imágenes. Pero hay un factor silencioso que consume los recursos del servidor sin que te des cuenta: la base de datos. Tanto WordPress como PrestaShop guardan absolutamente todo en MySQL: entradas, pedidos, sesiones de usuarios, productos, combinaciones, métricas, revisiones y datos temporales. Con el tiempo, esa información se acumula, se fragmenta y se llena de basura, haciendo que cada consulta tarde más y más.
Optimizar MySQL en WordPress o optimizar la base de datos de PrestaShop no es un lujo, es una necesidad si quieres que tu web cargue en menos de 2 segundos. Y no, no necesitas ser un experto en servidores. Con las herramientas adecuadas y siguiendo estos pasos, cualquier persona puede hacerlo sin romper nada.
En esta guía te voy a explicar, paso a paso y sin tecnicismos innecesarios, cómo acelerar MySQL, limpiar tablas, crear índices y mantener tu base de datos ligera y rápida. Al final, tu tienda o blog notará una mejora inmediata en la velocidad de carga y en la respuesta del servidor.
¿Qué significa realmente "optimizar MySQL"?
Antes de tocar nada, es importante que entiendas qué estamos haciendo. MySQL es un sistema de gestión de bases de datos. Piensa en él como un enorme archivador con miles de cajones (tablas). Cada cajón contiene fichas (filas) con información. Cuando visitas tu web, el servidor tiene que abrir varios cajones, leer las fichas y devolver los datos para montar la página.
Con el tiempo, pasan varias cosas:
- Se acumulan datos que ya no sirven (transient, sesiones caducadas, revisiones antiguas).
- Las tablas se fragmentan, es decir, los datos se guardan en trozos separados y el sistema tarda más en encontrarlos.
- No hay índices, que son como las etiquetas de los cajones. Sin ellos, MySQL tiene que revisar ficha por ficha.
- La configuración del servidor no está ajustada al tamaño de tu web.
Optimizar la base de datos significa limpiar, reorganizar, indexar y ajustar todo eso para que las consultas sean más rápidas. No es magia, es orden.
Herramientas imprescindibles antes de empezar
No te lances a tocar la base de datos a lo loco. Primero, asegúrate de tener estas herramientas:
- phpMyAdmin: viene incluido en casi todos los paneles de hosting. Si usas Syspanel (accede por el puerto 2106), lo encontrarás en la sección de bases de datos. Es tu navaja suiza.
- Un plugin de caché: para WordPress, te recomiendo WP Rocket o W3 Total Cache. Para PrestaShop, los módulos de caché del propio panel.
- Una copia de seguridad: esto es innegociable. Antes de cualquier cambio, exporta tu base de datos completa. Si algo falla, podrás restaurarla en segundos.
- Consulta el estado de MySQL: en phpMyAdmin, ve a la pestaña "Estado" o "Variables". Ahí verás el tiempo de consulta promedio y el número de conexiones. Te servirá para medir la mejora.
[WARNING] Nunca, jamás, hagas cambios en la base de datos sin una copia de seguridad reciente. Un error en una consulta SQL puede borrar datos que no podrás recuperar.
Cómo optimizar MySQL en WordPress paso a paso
WordPress es el CMS más usado, pero también el que más basura acumula. Cada vez que editas una entrada, guarda una revisión. Cada vez que alguien usa un formulario, crea transients. Con el tiempo, tu base de datos puede tener miles de filas inservibles.
1. Limpia las revisiones y autos guardados
Por defecto, WordPress guarda todas las revisiones de tus entradas. Si has editado un artículo 50 veces, tienes 50 copias en la base de datos. Eso es un lastre enorme.
Ve a phpMyAdmin, selecciona tu base de datos y ejecuta esta consulta SQL:
DELETE FROM wp_posts WHERE post_type = "revision";
Esto eliminará todas las revisiones. También puedes borrar los autos guardados y los borradores:
DELETE FROM wp_posts WHERE post_status = "draft" AND post_modified < NOW() - INTERVAL 30 DAY;
2. Elimina los transients caducados
Los transients son datos temporales que se guardan en la tabla wp_options. Muchos plugins no los borran correctamente. Esta consulta elimina los que ya han caducado:
DELETE FROM wp_options WHERE option_name LIKE '_transient_%' AND option_value < NOW();
Y para los que están expirados pero con formato de tiempo:
DELETE FROM wp_options WHERE option_name LIKE '_transient_timeout_%' AND option_value < NOW();
3. Limpia los comentarios spam
Si tienes muchos comentarios en spam, se quedan en la tabla wp_comments. Bórralos:
DELETE FROM wp_comments WHERE comment_approved = 'spam';
4. Optimiza las tablas (desfragmentación)
Una vez limpias las tablas, toca optimizarlas. Esto reorganiza los datos y libera espacio. En phpMyAdmin, selecciona todas las tablas (clic en "Seleccionar todo") y en el desplegable elige "Optimizar tabla". También puedes hacerlo por SQL:
OPTIMIZE TABLE wp_posts, wp_options, wp_comments, wp_postmeta;
[TIP] Esta operación es segura y se puede repetir cada mes. No borra datos, solo reorganiza.
5. Activa la caché de consultas
Si tu hosting te permite editar el archivo my.cnf (o my.ini), activa la caché de consultas. Añade estas líneas:
query_cache_type = 1
query_cache_size = 64M
Si no tienes acceso al archivo, puedes usar un plugin como WP Rocket que activa la caché de base de datos desde el panel.
6. Usa un plugin de optimización
Si no quieres tocar SQL a mano, instala WP-Optimize o Advanced Database Cleaner. Ambos hacen todo lo anterior con un clic y además programan optimizaciones automáticas semanales.
Cómo optimizar la base de datos de PrestaShop
PrestaShop es más complejo porque tiene muchas tablas relacionadas con productos, combinaciones, atributos, precios y pedidos. Si tu tienda tiene más de 10.000 productos, la base de datos puede ser enorme.
1. Activa el modo de mantenimiento
Antes de tocar nada, pon tu tienda en modo mantenimiento para evitar que los clientes entren mientras trabajas. Ve a Parámetros Avanzados > Mantenimiento y actívalo.
2. Limpia las tablas de sesiones y conexiones
PrestaShop guarda una sesión por cada visitante. Si tienes mucho tráfico, la tabla ps_connections y ps_sessions se llenan rápido. Ejecuta:
TRUNCATE TABLE ps_connections;
TRUNCATE TABLE ps_sessions;
3. Elimina el historial de búsquedas antiguas
La tabla ps_search_word guarda cada término buscado. Si tienes meses de datos, es un lastre. Limpia los que tengan más de 30 días:
DELETE FROM ps_search_word WHERE id_product NOT IN (SELECT id_product FROM ps_product);
4. Optimiza las tablas de productos y combinaciones
Las tablas ps_product_attribute, ps_product_attribute_combination y ps_stock_available suelen fragmentarse con los cambios de stock. Optimízalas:
OPTIMIZE TABLE ps_product, ps_product_attribute, ps_product_attribute_combination, ps_stock_available;
5. Activa el caché de MySQL en PrestaShop
En Parámetros Avanzados > Rendimiento, activa la "Caché de consultas MySQL" y selecciona "Caché de resultados". También puedes subir el "Tamaño de caché" a 128 MB si tu servidor lo permite.
6. Usa el módulo de limpieza oficial
PrestaShop tiene un módulo llamado "Limpieza de base de datos" (Database Cleaner) que puedes instalar desde el back office. Automatiza la limpieza de logs, sesiones y tablas temporales.
[INFO] Si tu tienda tiene más de 50.000 productos, te recomiendo contratar un especialista en rendimiento MySQL. La optimización manual puede ser arriesgada en bases de datos tan grandes.
Índices MySQL: el secreto para acelerar las consultas
Los índices son, probablemente, la mejora más efectiva que puedes hacer. Un índice es como el índice de un libro: en lugar de leer todas las páginas para encontrar una palabra, vas directamente a la página correcta.
¿Cómo saber si necesitas índices?
En phpMyAdmin, ve a la pestaña "Explorar" de una tabla y haz clic en "Índices". Si ves tablas con muchas filas y sin índices, es un problema. También puedes activar el "Perfil de consultas" en MySQL para ver qué consultas son lentas.
Índices recomendados para WordPress
ALTER TABLE wp_postmeta ADD INDEX meta_key (meta_key);
ALTER TABLE wp_posts ADD INDEX post_date (post_date);
ALTER TABLE wp_term_relationships ADD INDEX term_taxonomy_id (term_taxonomy_id);
Índices recomendados para PrestaShop
ALTER TABLE ps_product_attribute ADD INDEX reference (reference);
ALTER TABLE ps_stock_available ADD INDEX quantity (quantity);
ALTER TABLE ps_order_detail ADD INDEX product_id (product_id);
[WARNING] No crees índices en todas las columnas. Cada índice consume espacio y ralentiza las inserciones. Solo añade índices a columnas que se usen en consultas
WHERE,JOINoORDER BY.
Ajustes de configuración de MySQL para acelerar el servidor
A veces, el problema no es la base de datos en sí, sino la configuración del servidor. Si tienes acceso al archivo my.cnf, estos ajustes pueden marcar la diferencia:
max_connections = 150
key_buffer_size = 64M
innodb_buffer_pool_size = 256M
tmp_table_size = 64M
max_heap_table_size = 64M
query_cache_type = 1
query_cache_size = 64M
Si usas Syspanel, puedes ajustar estos valores desde el panel de administración en la sección de bases de datos. Recuerda que el puerto de acceso a Syspanel es el 2106.
[TIP] El valor más importante es
innodb_buffer_pool_size. Debería ser al menos el 70% de la memoria RAM disponible de tu servidor. Si tienes 1 GB de RAM, pon 512 MB.
Mantenimiento preventivo: la clave para no volver a ir lento
No basta con hacer una limpieza una vez. Debes establecer una rutina. Te recomiendo:
- Una vez al mes: limpiar revisiones, transients y sesiones.
- Una vez al trimestre: optimizar todas las tablas y revisar los índices.
- Una vez al año: revisar la configuración de MySQL y aumentar recursos si tu web ha crecido.
Puedes automatizar la limpieza con cron jobs. En WordPress, usa WP-CLI:
wp db optimize
wp transient delete --all
En PrestaShop, crea un script PHP que ejecute las consultas SQL y prográmalo con cron.
Preguntas frecuentes (FAQ)
¿Es seguro optimizar la base de datos de WordPress yo mismo?
Sí, siempre que hagas una copia de seguridad antes. Las consultas de limpieza y optimización son seguras y no borran contenido publicado.
¿Cada cuánto tiempo debo optimizar MySQL?
Depende del tráfico. Una web con 100 visitas diarias puede hacerlo cada 3 meses. Una tienda con miles de visitas, cada mes.
¿Los plugins de optimización de base de datos funcionan de verdad?
Sí, pero no hacen magia. Son útiles para la limpieza básica, pero no sustituyen a un buen ajuste de índices y configuración del servidor.
¿Optimizar la base de datos puede romper mi web?
Si ejecutas consultas incorrectas, sí. Por eso siempre debes probar en un entorno de desarrollo o hacer la copia de seguridad antes. Las consultas que te he dado son estándar y seguras.
¿Qué hago si mi base de datos es demasiado grande para phpMyAdmin?
Usa la línea de comandos de MySQL si tienes acceso SSH. O aumenta el límite de memoria en phpMyAdmin desde el archivo config.inc.php.
Conclusión: una base de datos ligera es una web rápida
Optimizar MySQL en WordPress o optimizar la base de datos de PrestaShop no es un proceso de una sola vez. Es una práctica continua que, combinada con una buena caché y un hosting decente, puede reducir el tiempo de carga de tu web en un 50% o más.
Empieza por lo básico: haz una copia de seguridad, limpia las tablas con las consultas que te he dado, crea índices en las columnas adecuadas y ajusta la configuración de MySQL. En menos de una hora, notarás la diferencia.
Y recuerda: si usas Syspanel, tienes acceso a todas las herramientas necesarias desde el puerto 2106, incluyendo phpMyAdmin, gestión de bases de datos y ajustes de MySQL. No necesitas ser un experto en servidores, solo seguir estos pasos con calma y sentido común.
Tu web (y tus usuarios) te lo agradecerán con páginas que cargan al instante y una experiencia de compra o lectura mucho más fluida. ¿A qué esperas para empezar?
