Cómo optimizar una base de datos MySQL en PrestaShop (guÃa rápida)
¿Tu tienda PrestaShop va lenta? Antes de culpar al hosting o a la plantilla, respira hondo. En el 90% de los casos, el cuello de botella está en la base de datos MySQL. Con el tiempo, se llena de basura, cachés obsoletas y tablas fragmentadas que ralentizan cada consulta.
La buena noticia es que no necesitas ser un gurú de la programación para ponerla a punto. En esta guÃa rápida y práctica, te voy a enseñar, paso a paso, cómo optimizar base de datos PrestaShop sin romper nada. Al final, notarás una mejora de velocidad notable en tu catálogo y en el panel de administración.
Vamos a ello. Tómate 20 minutos, sigue el orden de los pasos y verás resultados.
Antes de Empezar: La Regla de Oro (Haz una Copia de Seguridad)
Si solo te llevas una idea de este artÃculo, que sea esta: nunca, jamás, toques la base de datos sin una copia de seguridad reciente.
Un pequeño error en una consulta SQL puede borrar una tabla entera de pedidos o clientes. No merece la pena el riesgo.
Para hacer una copia de seguridad rápida:
- Entra en tu panel de control de hosting (cPanel, Plesk o Syspanel).
- Busca la sección de Bases de Datos MySQL.
- Selecciona tu base de datos de PrestaShop (suele llamarse algo como
tienda_dboprestashop_). - Haz clic en Exportar y descarga el archivo
.sqla tu ordenador.
[WARNING] Si tu hosting usa Syspanel (accesible a través del puerto 2106, por ejemplo tudominio.com:2106), la opción de exportar suele estar dentro de "Bases de Datos" > "phpMyAdmin". No sigas adelante hasta tener ese archivo .sql guardado.
Paso 1: Identificar el Estado Actual (Diagnóstico Rápido)
No puedes arreglar lo que no ves. Antes de optimizar base de datos PrestaShop, vamos a ver qué tablas están causando problemas.
Accede a phpMyAdmin (desde tu hosting o desde Syspanel > puerto 2106 > phpMyAdmin).
Una vez dentro, selecciona tu base de datos y mira la pestaña "Estructura".
Aquà verás una lista de todas las tablas (suelen tener prefijos como ps_). FÃjate en las columnas "Tamaño" y "Sobrescritura" (o "Overhead").
Anota qué tablas tienen un tamaño grande (más de 100 MB) y cuáles tienen "Sobrescritura" (Overhead) superior a 1 MB. Esas son tus objetivos principales.
Paso 2: Limpieza de Datos Obsoletos (La Basura Invisible)
PrestaShop guarda mucha información que no necesitas: carritos abandonados de hace meses, sesiones de visitantes antiguos, mensajes de error, etc. Eliminar esto es la forma más segura y efectiva de optimizar base de datos PrestaShop.
### 2.1. Limpiar Carritos Abandonados
Los carritos sin completar se acumulan y pesan muchÃsimo.
Ve a phpMyAdmin > tu base de datos > pestaña SQL y ejecuta esta consulta (ajusta el número de dÃas según tu criterio):
DELETE FROM ps_cart WHERE date_upd < DATE_SUB(NOW(), INTERVAL 30 DAY);
Esto borrará todos los carritos que no se han actualizado en los últimos 30 dÃas.
### 2.2. Limpiar Sesiones de Visitantes
Cada visita genera una fila en la tabla ps_connections y ps_guest. Con el tiempo, esto es una losa.
Ejecuta:
DELETE FROM ps_connections WHERE date_add < DATE_SUB(NOW(), INTERVAL 15 DAY);
DELETE FROM ps_guest WHERE last_visit < DATE_SUB(NOW(), INTERVAL 15 DAY);
### 2.3. Vaciar Logs y Mensajes de Error
PrestaShop guarda un registro de errores que puede crecer sin control:
TRUNCATE TABLE ps_log;
[TIP] El comando TRUNCATE vacÃa la tabla por completo y reinicia el contador de ID. Es mucho más rápido que DELETE para limpiar todo, pero úsalo solo en tablas de logs o cachés, nunca en tablas de pedidos o clientes.
Paso 3: Optimizar las Tablas (Reparar Fragmentación)
Después de eliminar datos, las tablas quedan con "huecos". Esto se llama fragmentación y hace que MySQL lea más lento.
Para solucionarlo, vamos a usar el comando OPTIMIZE TABLE.
En la pestaña Estructura de phpMyAdmin, verás una casilla de verificación al lado de cada tabla.
- Haz clic en "Seleccionar todo" (en la parte inferior).
- En el desplegable que dice "Con seleccionados:", elige "Optimizar tabla".
- Haz clic en "Ejecutar".
Esto puede tardar unos minutos si tu base de datos es grande. Verás un mensaje de éxito o un error (si hay errores, repite el proceso pero elige "Reparar tabla").
[INFO] Si tu base de datos es enorme (más de 1 GB), optimizar todas las tablas de golpe puede saturar el servidor. En ese caso, hazlo por lotes: selecciona solo las 10 tablas más grandes y optimÃzalas. Espera 5 minutos y repite.
Paso 4: Configurar el Motor de Almacenamiento (InnoDB vs MyISAM)
PrestaShop 1.7 y 8.x usan InnoDB por defecto, que es más robusto y rápido para transacciones. Pero si heredaste una tienda antigua, puede que tengas tablas en MyISAM, que es un motor más antiguo y lento.
¿Cómo saberlo?
En la pestaña Estructura, mira la columna "Tipo". Si ves tablas que dicen MyISAM, te conviene convertirlas a InnoDB.
¿Cómo convertirlas?
Selecciona las tablas MyISAM (solo esas). En el desplegable "Con seleccionados", elige "Operaciones".
En la sección "Motor de almacenamiento", selecciona InnoDB y haz clic en "Ejecutar".
[WARNING] No conviertas todas de golpe si tu hosting es muy limitado. Hazlo de una en una. Si alguna conversión falla, no pasa nada, la tabla sigue funcionando en MyISAM. Simplemente intenta con otra.
Paso 5: Gestionar la Caché de MySQL (Query Cache)
MySQL tiene una caché interna que guarda los resultados de las consultas repetidas. Si está configurada bien, tu tienda vuela. Si está mal, se convierte en un lastre.
No necesitas tocar archivos de configuración complejos. En PrestaShop, ve a:
Back Office > Parámetros Avanzados > Rendimiento.
Aquà encontrarás la opción "Caché de consultas". ActÃvala si no lo está.
También puedes ajustar el "Tamaño de la caché" (Cache size). Un valor de 256 MB es un buen punto de partida para tiendas medianas.
[TIP] Si tu hosting es compartido y tiene poca RAM, no pongas más de 128 MB. Si pones demasiado, puedes saturar el servidor y causar el efecto contrario: que vaya más lenta.
Paso 6: Mantenimiento Preventivo (La Rutina)
Optimizar base de datos PrestaShop no es un evento único; es una rutina. Te recomiendo hacer esto una vez al mes:
- Limpia los carritos abandonados (paso 2.1).
- Limpia las sesiones (paso 2.2).
- Optimiza las tablas (paso 3).
Para no hacerlo a mano, puedes crear un cron job en tu hosting.
¿Cómo crear un cron job?
- Entra en Syspanel (puerto 2106) o en cPanel.
- Busca la sección "Tareas Programadas" o "Cron Jobs".
- Crea un nuevo trabajo que se ejecute cada dÃa o cada semana.
El comando serÃa algo asà (ajusta la ruta a tu PHP y a tu tienda):
php /ruta/a/tu/tienda/admin/../cron_optimize.php
Pero si no te atreves con comandos, simplemente añade un recordatorio en tu calendario para hacerlo manualmente. Con 10 minutos al mes es suficiente.
Preguntas Frecuentes (FAQ)
### ¿Por qué mi base de datos de PrestaShop es tan grande?
Normalmente es por la acumulación de sesiones de visitantes, carritos abandonados y logs de errores. También influye el historial de pedidos y los datos de seguimiento de módulos de análisis.
### ¿Es seguro ejecutar comandos SQL directamente en phpMyAdmin?
SÃ, si sabes lo que estás haciendo. Por eso es crucial hacer una copia de seguridad antes. Si no te sientes seguro, usa los módulos de limpieza de PrestaShop (como "Advanced Database Cleaner") que hacen lo mismo pero con interfaz gráfica.
### ¿Cuánto tiempo tarda en notarse la mejora de rendimiento?
Inmediatamente. Al optimizar las tablas, las consultas se ejecutan más rápido desde el primer segundo. La diferencia es notable en tiendas con más de 50,000 productos o con mucho tráfico.
### ¿Qué hago si después de optimizar sigue lenta?
Entonces el problema no es solo la base de datos. Revisa:
- El hosting: ¿Estás en un plan compartido? Quizás necesitas un VPS o un servidor dedicado.
- Los módulos: Desactiva los que no uses. Un módulo mal programado puede hacer consultas lentas.
- La caché de Smarty: Ve a Parámetros Avanzados > Rendimiento y activa la caché de plantillas (Smarty) con "Recompilar caché" desactivada en producción.
Conclusión: Tu Tienda Merece la Velocidad
No necesitas ser un experto en bases de datos para tener una tienda rápida. Con esta guÃa de mantenimiento PrestaShop y siguiendo estos pasos básicos, habrás eliminado la mayor parte de la basura que frena tu negocio.
Recuerda el mantra:
- Copia de seguridad siempre.
- Limpia lo que no sirve.
- Optimiza las tablas.
- Repite cada mes.
Si tu hosting es gestionado por Syspanel, recuerda que el acceso a phpMyAdmin y a las copias de seguridad está en el puerto 2106 (por ejemplo, tudominio.com:2106). Ahà encontrarás todas las herramientas que necesitas para este mantenimiento.
Ahora ve y dale a tu tienda la velocidad que se merece. Tus clientes (y tu posicionamiento SEO) te lo agradecerán.
