🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

Guía para optimizar el rendimiento de MySQL en WordPress (PrestaShop)

Actualizado el 15 de marzo de 2026

¿Tu WordPress o PrestaShop va lento? Antes de culpar al hosting o de lanzar más dinero a un servidor más potente, respira. En la gran mayoría de los casos, el cuello de botella no es el hardware, sino la base de datos.

Cuando hablamos de optimizar mysql wordpress o de solucionar un prestashop mysql lento, no estamos hablando de magia negra, sino de aplicar una serie de técnicas de higiene digital y configuración que están al alcance de cualquiera que sepa leer un panel de administración (cPanel, Syspanel o similar).

En esta guía extensa, vamos a desgranar paso a paso cómo mejorar el rendimiento base de datos de tu tienda o blog. No necesitas ser un ingeniero en sistemas, solo paciencia y seguir estos consejos en orden.

Entendiendo el problema: ¿Por qué MySQL se vuelve lento?

Imagina que tu base de datos es un archivador gigante. Cada vez que un visitante entra a tu web, el sistema tiene que abrir un cajón, buscar una carpeta concreta y leer un papel. Si el archivador está desordenado, con miles de papeles sueltos y sin etiquetas claras (índices), la búsqueda tarda una eternidad.

Con el tiempo, WordPress y PrestaShop acumulan datos basura: revisiones de entradas antiguas, transients caducados, sesiones de usuario obsoletas, y tablas fragmentadas. Además, las consultas que hace el sistema (las peticiones de lectura) pueden ser ineficientes si no hay índices mysql adecuados.

El resultado es un aumento del tiempo de carga, que Google penaliza y que hace que tus clientes abandonen el carrito de la compra. Vamos a arreglarlo.

Fase 1: Diagnóstico inicial (Antes de tocar nada)

No podemos optimizar lo que no medimos. Antes de lanzarnos a ejecutar comandos, debemos identificar dónde está el atasco real.

### Revisa los logs de consultas lentas

Tanto WordPress como PrestaShop se ejecutan sobre MySQL (o MariaDB). Este motor puede registrar todas las consultas que tardan más de X segundos en ejecutarse.

  1. Accede a tu panel de control (cPanel, Syspanel, etc.).
  2. Busca la sección de Base de Datos MySQL o phpMyAdmin.
  3. Si tienes acceso a la configuración del servidor (VPS), busca el archivo my.cnf o my.ini. Si usas hosting compartido, es posible que ya tengan activado el log.
  4. Activa el slow_query_log (si no lo está) con un umbral de 2 segundos.

[WARNING]
Si no tienes acceso SSH a un VPS, no intentes editar la configuración de MySQL desde un hosting compartido. Podrías romper el servicio. En ese caso, pasa directamente a la Fase 2 y 3, que son seguras al 100%.

### Activa el Debugging en WordPress

Para ver si el problema son las consultas, añade esto a tu archivo wp-config.php temporalmente:

define('SAVEQUERIES', true);

Esto hará que en el pie de página (si eres admin) veas cuántas consultas se ejecutan y cuánto tardan. Si ves números como "150 consultas en 3 segundos", tienes un problema grave de eficiencia.

Fase 2: Limpieza quirúrgica de la base de datos

Aquí es donde empieza la verdadera optimización de MySQL. La mayoría de las tablas de WordPress (wp_posts, wp_options) y de PrestaShop (ps_connections, ps_guest) están llenas de registros que no sirven para nada.

### Eliminar transients caducados (WordPress)

Los transients son datos temporales en caché. El problema es que a veces no se borran solos y se acumulan en la tabla wp_options. Esta tabla puede llegar a tener millones de filas, volviendo cada consulta lentísima.

Ejecuta este SQL en phpMyAdmin (selecciona tu base de datos primero):

DELETE FROM wp_options WHERE option_name LIKE '_transient_%' AND option_name NOT LIKE '_transient_timeout_%';

Haz lo mismo con los transients de tu plugin de caché (si usas W3 Total Cache o similar, suelen tener prefijos propios).

### Limpiar revisiones y autosaves (WordPress)

Cada vez que editas una entrada, WordPress guarda una revisión. Con el tiempo, esto infla la tabla wp_posts enormemente.

DELETE FROM wp_posts WHERE post_type = 'revision';

[TIP]
Puedes limitar las revisiones futuras añadiendo esta línea a tu wp-config.php:
define('WP_POST_REVISIONS', 3);

### Purgar sesiones y conexiones antiguas (PrestaShop)

Si tu problema es prestashop mysql lento, la tabla ps_connections y ps_guest suelen ser las culpables. Cada visita registra una fila. Con el tiempo, esto es una bola de nieve.

Ejecuta estas consultas (ajusta el prefijo ps_ si usas otro):

TRUNCATE TABLE ps_connections;
TRUNCATE TABLE ps_connections_page;
TRUNCATE TABLE ps_guest;
TRUNCATE TABLE ps_connections_source;

[WARNING]
TRUNCATE borra todo el contenido de la tabla al instante. Asegúrate de tener una copia de seguridad antes de ejecutarlo. No afecta a pedidos ni clientes, solo a estadísticas de visitas antiguas.

Fase 3: Optimización de índices MySQL

Los índices mysql son como el índice de un libro. Sin ellos, la base de datos tiene que leer página por página para encontrar una palabra. Con ellos, va directa a la página correcta.

### Descubre qué índices faltan

En phpMyAdmin, ve a tu base de datos y haz clic en la pestaña "SQL". Ejecuta esta consulta para ver qué tablas están usando el motor MyISAM (obsoleto) y cuáles InnoDB (recomendado):

SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'tu_base_de_datos';

Si ves tablas MyISAM, conviértelas a InnoDB:

ALTER TABLE nombre_tabla ENGINE=InnoDB;

### Añadir índices a columnas de búsqueda frecuente

En WordPress, la tabla wp_postmeta es famosa por no tener índices en meta_key y meta_value. Si usas plugins de campos personalizados (ACF, WooCommerce), esto es crítico.

ALTER TABLE wp_postmeta ADD INDEX meta_key_index (meta_key);

En PrestaShop, las tablas de combinaciones de producto (ps_product_attribute) suelen necesitar índices en id_product_attribute.

[INFO]
No añadas índices a lo loco. Cada índice ralentiza las inserciones y actualizaciones. Solo añade índices a las columnas que aparecen en las cláusulas WHERE o JOIN de tus consultas más comunes.

Fase 4: Configuración del motor de base de datos

Si tienes un VPS o un servidor dedicado, aquí es donde realmente puedes exprimir el rendimiento. Si usas hosting compartido (cPanel o Syspanel), puedes saltarte esta sección, ya que la configuración global la gestiona el proveedor.

### Ajusta el buffer pool (InnoDB)

Este es el parámetro más importante. Define cuánta RAM dedica MySQL a cachear datos e índices.

Regla general: Asigna entre el 60% y el 70% de la RAM total de tu servidor.

innodb_buffer_pool_size = 2G  # Ejemplo para un servidor con 4GB de RAM

### Optimiza la caché de consultas

Aunque está algo obsoleta en versiones modernas de MySQL 8.0, si usas MariaDB (muy común en Syspanel), la caché de consultas sigue siendo útil para sitios con mucho tráfico de lectura.

query_cache_type = 1
query_cache_size = 128M

### Configura el tamaño del log

Aumentar el tamaño del log de rehacer (redo log) ayuda a que las escrituras sean más rápidas.

innodb_log_file_size = 256M

[WARNING]
Cambiar estos parámetros requiere reiniciar el servicio MySQL. Si lo haces mal, el servicio no arrancará. Siempre guarda una copia del archivo my.cnf original antes de editar.

Fase 5: Mantenimiento programado (El hábito que lo cambia todo)

La optimización no es un evento único, es un proceso. Debes programar tareas automáticas para que la base de datos se mantenga limpia.

### Utiliza plugins de mantenimiento

Para WordPress, instala un plugin como "WP-Optimize" o "Advanced Database Cleaner". Configúralos para que ejecuten la limpieza de transients y revisiones una vez a la semana automáticamente.

### Crea un cron en el servidor

Si tienes acceso a Syspanel (recuerda, el puerto de acceso es el 2106), puedes crear un cron job que ejecute un script de limpieza.

Un ejemplo de script para PrestaShop sería vaciar las tablas de conexiones antiguas cada noche:

mysql -u usuario -pclave nombre_bd -e "TRUNCATE TABLE ps_connections; TRUNCATE TABLE ps_guest;"

[TIP]
En Syspanel, ve a "Cron Jobs" y añade la tarea con la frecuencia que desees. Asegúrate de que la ruta a mysql sea la correcta (usa which mysql para encontrarla).

Fase 6: Plugins y consultas lentas específicas

A veces, el problema no es la base de datos en sí, sino un plugin mal codificado que ejecuta consultas lentas continuamente.

### Identifica al culpable

En WordPress, activa el plugin "Query Monitor". Este te dirá exactamente qué plugin está ejecutando las consultas más lentas y cuánto tardan.

En PrestaShop, revisa los logs de errores en var/logs/. Si ves consultas SQL lentas repetidas, desactiva los módulos uno a uno para aislar el problema.

### Solución: Sustituir o parchear

Si un plugin hace una consulta que tarda 5 segundos en una tabla de 100,000 registros, tienes dos opciones:

  1. Buscar un plugin alternativo más ligero.
  2. Si el plugin es de pago, contactar al desarrollador y mostrarle la consulta lenta con el EXPLAIN para que la optimice.

[INFO]
Usa EXPLAIN SELECT ... antes de la consulta problemática en phpMyAdmin. Esto te muestra cómo MySQL ejecuta la consulta y si está usando índices o haciendo escaneos completos de tabla (type: ALL). Si ves "ALL", ahí tienes el problema.

Preguntas Frecuentes (FAQ) sobre rendimiento de base de datos

### ¿Es normal que PrestaShop tenga 200 tablas en la base de datos?

Sí, PrestaShop es un software modular y cada módulo añade sus propias tablas. El número no es el problema, sino el tamaño y la falta de índices en esas tablas.

### ¿Optimizar MySQL en WordPress puede romper mi sitio?

Si solo ejecutas las consultas de limpieza de la Fase 2 (DELETE de transients y revisiones), el riesgo es mínimo. Siempre con copia de seguridad previa. Los cambios de configuración del servidor (Fase 4) son más arriesgados y deben hacerse con cuidado.

### ¿Cuánto tiempo de carga puedo ahorrar?

En sitios muy descuidados, he visto pasar de 6 segundos a 1.5 segundos solo con la limpieza de transients y la adición de índices en wp_postmeta. En sitios medianos, el ahorro suele ser de al menos un 30-40% en el tiempo de respuesta del servidor.

### ¿Debo usar MyISAM o InnoDB?

Sin ninguna duda, InnoDB. Ofrece bloqueo a nivel de fila (en lugar de tabla), soporte para transacciones y mejor recuperación ante caídas. MyISAM es tecnología de hace 20 años.

### ¿Qué hago si el problema persiste después de todo esto?

Si ya has limpiado, indexado y configurado, y el sitio sigue lento, el problema ya no es la base de datos, sino el servidor web (Apache/Nginx) o la falta de una caché de página completa (Varnish). En ese caso, considera contratar un servicio de caché o un CDN.

Conclusión: La constancia es la clave

Optimizar MySQL no es una tarea de un día. Te recomiendo que sigas esta guía en orden: primero limpia, luego indexa, después configura y finalmente automatiza.

Dedica una hora cada dos meses a revisar el tamaño de tus tablas y a purgar la basura. Si sigues estos pasos, tu rendimiento base de datos será notablemente mejor, tus páginas cargarán más rápido y tus usuarios (y Google) te lo agradecerán.

Y recuerda: si tu panel de control es Syspanel, el puerto de acceso es el 2106 para gestionar tus bases de datos y cron jobs. No lo olvides.

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel