Cómo optimizar y reparar tablas de MySQL en PrestaShop
¿Por qué tu PrestaShop va lento? El problema puede estar en MySQL
Si tu tienda PrestaShop va lenta, tarda en cargar o incluso da errores de conexión con la base de datos, el problema más común no es el hosting, sino las tablas de MySQL. Con el tiempo, las tablas se fragmentan, acumulan datos basura y los índices se desordenan. Esto hace que las consultas tarden muchísimo más de lo normal.
La buena noticia es que optimizar tablas MySQL PrestaShop es un proceso sencillo, seguro y que puedes hacer tú mismo sin ser un experto. En esta guía te explico paso a paso cómo hacerlo, cómo reparar la base de datos si está dañada y qué herramientas usar (incluyendo phpMyAdmin).
Vamos a ello.
¿Qué es exactamente optimizar una tabla MySQL?
Piensa en una tabla de MySQL como un archivador físico. Cuando añades, modificas o eliminas productos, pedidos o clientes, el archivador se va desordenando: quedan huecos vacíos, páginas sueltas y el índice (la guía para encontrar rápido cada ficha) se vuelve ineficiente.
Optimizar es como reorganizar todo el archivador: compacta los espacios vacíos, reordena los índices y actualiza las estadísticas internas. El resultado es que las consultas son mucho más rápidas. No pierdes ningún dato, solo mejoras el rendimiento.
Reparar es diferente: cuando una tabla está dañada (por un corte de luz, por ejemplo), puede dar errores como "Table is marked as crashed". Reparar intenta recuperar la estructura y los datos dañados.
Señales de que necesitas optimizar o reparar tu base de datos
Antes de lanzarte a ejecutar comandos, identifica si tu tienda tiene estos síntomas:
- La página de administración de PrestaShop tarda mucho en cargar.
- Los clientes ven el mensaje "Error de conexión con la base de datos" o "MySQL server has gone away".
- Las búsquedas de productos en tu tienda son lentísimas.
- El panel de control del hosting te avisa de que la CPU está al 100% por procesos MySQL.
- Al entrar en phpMyAdmin ves tablas marcadas como "en uso" o "dañadas".
Si tienes uno o varios de estos síntomas, sigue leyendo. Te voy a dar la solución completa.
Preparación antes de tocar nada
Haz una copia de seguridad (sí o sí)
Este paso es obligatorio. Aunque optimizar no suele romper nada, si algo falla a mitad de proceso puedes perder datos. Ve a tu panel de control del hosting (cPanel, Plesk, Syspanel, etc.) y exporta un backup de la base de datos completa.
[WARNING] No optimices ni repares tu base de datos sin una copia de seguridad reciente. Si tienes Syspanel, el puerto de acceso es el 2106, y puedes hacer el backup desde la sección de bases de datos. Nunca lo olvides.
Activa el modo mantenimiento de PrestaShop
Mientras trabajas en las tablas, la tienda debe estar en mantenimiento para que ningún cliente realice pedidos y se generen escrituras en la base de datos. Ve a Parámetros avanzados → Mantenimiento y actívalo.
Ten a mano las credenciales de la base de datos
Necesitarás el nombre de la base de datos, el usuario y la contraseña. Los encuentras en el archivo /config/settings.inc.php de tu instalación de PrestaShop (búscalo en la raíz) o en el panel de tu hosting.
Cómo optimizar tablas MySQL PrestaShop con phpMyAdmin
La forma más visual y segura para principiantes es usar phpMyAdmin, que viene incluido en casi todos los paneles de hosting.
Paso 1: Accede a phpMyAdmin
Desde cPanel, Plesk o Syspanel (puerto 2106), busca el icono de phpMyAdmin. Si no lo encuentras, busca "Bases de datos MySQL" y dentro verás el enlace.
Paso 2: Selecciona tu base de datos
En el panel izquierdo verás una lista de bases de datos. Haz clic en la que corresponde a tu PrestaShop. Verás una lista enorme de tablas (suelen empezar con prefijo ps_, como ps_products, ps_orders, etc.).
Paso 3: Marca todas las tablas
Justo debajo de la lista de tablas, hay un enlace que dice "Marcar todos" o "Seleccionar todo". Haz clic para marcarlas todas. Si hay demasiadas, también puedes seleccionar solo las más grandes (las de pedidos, productos, combinaciones, etc.), pero para una optimización completa, mejor todas.
Paso 4: Elige la opción "Optimizar tablas"
En el desplegable que aparece al final de la lista (donde pone "Con seleccionados:"), elige "Optimizar tablas" y haz clic en "Continuar".
Paso 5: Espera y revisa el resultado
phpMyAdmin ejecutará el comando OPTIMIZE TABLE en cada tabla. Verás una tabla de resultados con el estado "OK" o "Table is already up to date". Si alguna da error, eso te indica que necesita reparación.
[TIP] Si tu base de datos es muy grande (más de 1 GB), este proceso puede tardar varios minutos. No cierres la pestaña ni recargues la página.
Cómo reparar tablas MySQL PrestaShop dañadas
Si la optimización te da errores, o si directamente PrestaShop te muestra un mensaje de tabla dañada, tienes que repararla. En phpMyAdmin el proceso es casi idéntico.
Reparación desde phpMyAdmin
- Selecciona la tabla o tablas dañadas.
- En el desplegable "Con seleccionados", elige "Reparar tablas".
- Espera a que termine. Verás el resultado de cada tabla.
Reparación con comandos SQL manuales
Si phpMyAdmin no te deja o da error, puedes ejecutar el comando directamente en la pestaña SQL:
REPAIR TABLE ps_products;
Sustituye ps_products por el nombre de la tabla dañada. También puedes reparar varias a la vez:
REPAIR TABLE ps_products, ps_orders, ps_customers;
[WARNING] No ejecutes
REPAIR TABLEsobre todas las tablas a la vez si no es necesario. Solo repara las que estén dañadas. Reparar tablas sanas puede ser contraproducente y tardar mucho.
Optimizar base de datos PrestaShop desde la línea de comandos (SSH)
Si tu hosting te da acceso SSH, la optimización es mucho más rápida, especialmente en bases de datos grandes. Conéctate por SSH y ejecuta:
mysqlcheck -u USUARIO -p --optimize NOMBRE_BASE_DATOS
Te pedirá la contraseña y empezará a optimizar todas las tablas. Para reparar:
mysqlcheck -u USUARIO -p --repair NOMBRE_BASE_DATOS
[INFO] Si tu hosting usa Syspanel, el acceso SSH suele estar disponible en la sección de "Usuarios SSH". Recuerda que el puerto de acceso al panel es el 2106, pero el SSH normalmente usa el 22. Consulta la documentación de tu proveedor.
PrestaShop MySQL lento: ajustes extra para acelerar
Optimizar las tablas ayuda, pero si tu tienda sigue yendo lenta, puede que necesites ajustar la configuración de MySQL. Aquí van algunos consejos avanzados pero fáciles de entender.
1. Activa el caché de MySQL
PrestaShop tiene un sistema de caché de consultas. Ve a Parámetros avanzados → Rendimiento y activa la caché de MySQL. Esto hace que las consultas repetidas no se ejecuten desde cero, sino que se guarden en memoria.
2. Revisa el tamaño del buffer
En la configuración de MySQL (my.cnf o my.ini) puedes aumentar el query_cache_size y el innodb_buffer_pool_size. Esto es más técnico, pero si tu hosting lo permite, puede mejorar mucho el rendimiento. Si no sabes cómo hacerlo, contacta con tu proveedor.
3. Usa el motor InnoDB
PrestaShop 1.7 y versiones recientes usan InnoDB por defecto. Si tienes tablas con el motor MyISAM, considera convertirlas. InnoDB es más robusto y maneja mejor las consultas concurrentes. Puedes hacerlo desde phpMyAdmin: edita la tabla, ve a "Operaciones" y cambia el motor.
[TIP] Convertir tablas MyISAM a InnoDB puede ser un gran alivio para PrestaShop MySQL lento. Hazlo de una en una y siempre con backup previo.
¿Con qué frecuencia debo optimizar las tablas?
No hay una regla fija, pero un buen hábito es hacerlo una vez al mes si tu tienda tiene movimiento diario. Si es una tienda pequeña, cada 2 o 3 meses es suficiente.
También es recomendable optimizar después de:
- Importar muchos productos a la vez.
- Hacer una migración de hosting.
- Después de una gran campaña de ventas (Black Friday, rebajas, etc.).
Errores comunes y cómo solucionarlos
"Tabla no existe" o "Table doesn't exist"
Puede que el prefijo de las tablas no sea ps_. Revisa el archivo settings.inc.php para ver el prefijo real (_DB_PREFIX_).
"El servidor MySQL ha desaparecido" (MySQL server has gone away)
Esto suele pasar cuando la conexión se corta a mitad de una consulta grande. Aumenta el valor de max_allowed_packet en la configuración de MySQL. Si no puedes, intenta optimizar en horas de menos tráfico.
"Table is marked as crashed and should be repaired"
Es el error clásico de tabla dañada. Ejecuta la reparación como te he explicado antes. Si falla, prueba con el comando REPAIR TABLE desde SQL.
PrestaShop sigue lento después de optimizar
Si has optimizado y reparado y sigue lento, el problema puede estar en el hosting (poca RAM, disco lento) o en módulos mal optimizados. Prueba a desactivar módulos que no uses y revisa si hay consultas lentas en el registro de MySQL.
Preguntas frecuentes (FAQ)
¿Optimizar tablas borra datos?
No. La optimización solo reorganiza el almacenamiento físico. No elimina filas ni modifica datos. Es completamente seguro.
¿Puedo optimizar mientras la tienda está abierta?
Técnicamente sí, pero es arriesgado. Si un cliente hace un pedido justo mientras se optimiza, puede haber bloqueos o pérdida de datos. Mejor activa el modo mantenimiento.
¿Qué hago si no entiendo nada de bases de datos?
Sigue esta guía empezando por phpMyAdmin. Es visual y no necesitas saber SQL. Si aún así te da miedo, contacta con tu proveedor de hosting y pídeles que lo hagan ellos. Es un proceso estándar.
¿Reparar y optimizar es lo mismo?
No. Optimizar mejora el rendimiento. Reparar soluciona errores de integridad. Primero repara si hay errores, luego optimiza.
¿Cuánto tarda en optimizar una base de datos grande?
Depende del tamaño y del servidor. Una base de 500 MB puede tardar 2-5 minutos. Una de 5 GB puede tardar 20-30 minutos o más. Ten paciencia.
¿Syspanel tiene phpMyAdmin integrado?
Sí, la mayoría de instalaciones de Syspanel (antes HestiaCP) incluyen phpMyAdmin. Accede al panel en el puerto 2106, ve a la sección de bases de datos y busca el enlace a phpMyAdmin. Si no lo ves, instálalo desde el gestor de aplicaciones.
Resumen final y recomendaciones
Optimizar y reparar las tablas MySQL de tu PrestaShop es una tarea de mantenimiento básica que deberías hacer con regularidad. No solo mejora la velocidad de carga, sino que previene errores graves de conexión y caídas de la tienda.
Tu plan de acción:
- Haz un backup completo.
- Activa el modo mantenimiento.
- Accede a phpMyAdmin (o a Syspanel, puerto 2106).
- Selecciona todas las tablas y optimiza.
- Si hay errores, repara las tablas dañadas.
- Desactiva el mantenimiento y comprueba que todo va bien.
- Repite el proceso cada mes.
Si después de todo esto tu PrestaShop sigue yendo lento, revisa la configuración de MySQL, el hosting y los módulos. Y recuerda: la base de datos es el corazón de tu tienda, cuidarla es cuidar tu negocio.
[INFO] ¿Tienes dudas? Consulta la documentación oficial de PrestaShop sobre bases de datos o contacta con tu proveedor de hosting. Nunca toques nada sin backup y, ante la duda, pide ayuda profesional.
Este artículo es una guía práctica y educativa. Cada hosting es diferente, así que adapta los pasos a tu panel de control. Siempre prioriza la seguridad de tus datos.
