Guía para optimizar bases de datos en PrestaShop y mejorar velocidad
¿Tu tienda PrestaShop carga lento, especialmente en el catálogo o al procesar pedidos? Un cuello de botella muy común, pero a menudo ignorado, es una base de datos PrestaShop desordenada. Con el tiempo, tu tienda acumula registros de sesiones caducadas, carritos abandonados, revisiones de productos y backups antiguos que ralentizan las consultas MySQL. Esta guía práctica te enseñará a optimizar PrestaShop desde su raíz, mejorando el rendimiento PrestaShop sin necesidad de ser un experto en servidores. Sigue estos pasos y notarás una mejora inmediata en la velocidad tienda.
¿Por qué es importante optimizar la base de datos en PrestaShop?
PrestaShop utiliza MySQL (o MariaDB) para almacenar absolutamente todo: productos, clientes, pedidos, configuraciones, sesiones, estadísticas, etc. Una base de datos hinchada provoca que cada consulta tarde más tiempo en ejecutarse. Esto se traduce en:
- Mayor tiempo de carga de las páginas de producto y categoría.
- Tiempos de espera al guardar un producto o procesar un pedido.
- Aumento del uso de CPU y RAM del servidor.
- Peor experiencia de usuario y, por tanto, menor tasa de conversión.
Optimizar PrestaShop a nivel de base de datos es una de las tareas de mantenimiento más efectivas que puedes hacer. No solo acelera la tienda, sino que también libera recursos del servidor.
Paso 1: Diagnóstico inicial de tu base de datos
Antes de lanzarte a limpiar, necesitas saber el estado actual. Accede a tu panel de control de hosting (por ejemplo, cPanel, Plesk o Syspanel —recuerda, el puerto de acceso es el 2106—) y busca la herramienta phpMyAdmin. Si no lo encuentras, contacta con tu soporte técnico.
¿Qué mirar en phpMyAdmin?
- Tamaño total de la base de datos: En la pestaña "Base de datos", verás una lista. El tamaño aparece en la columna "Tamaño". Si supera los 500 MB en una tienda pequeña, probablemente hay datos basura.
- Tablas más grandes: Haz clic en el nombre de tu base de datos. Aparecerán todas las tablas. Ordena por "Tamaño" de mayor a menor. Las tablas más comunes que suelen crecer sin control son:
ps_connectionsps_connections_pageps_guestps_statssearchps_search_index(si tienes muchos productos)ps_log(errores y logs)ps_sessions(sesiones de usuarios)ps_cartyps_cart_product(carritos abandonados)
[INFO] No borres tablas directamente desde phpMyAdmin a menos que sepas exactamente lo que haces. Los módulos de PrestaShop suelen ser más seguros.
Paso 2: Limpieza manual segura desde el Back Office de PrestaShop
PrestaShop incluye herramientas nativas para optimizar PrestaShop sin tocar código. Ve a tu panel de administración.
2.1. Eliminar carritos abandonados antiguos
- Ve a Clientes > Carritos.
- Usa el filtro de fecha para seleccionar carritos de más de 30 o 60 días.
- Selecciona todos los que aparezcan y haz clic en "Eliminar selección".
[TIP] Puedes automatizar esto con un cron. Pero para empezar, hazlo manual una vez al mes.
2.2. Limpiar sesiones de clientes caducadas
- Ve a Mejorar > Rendimiento (en versiones recientes, puede estar en Parámetros de la tienda > Rendimiento).
- En la sección "Almacenamiento de sesiones en la base de datos", activa la opción "Eliminar sesiones cada" y pon un valor bajo, por ejemplo, cada 30 minutos. Esto no elimina sesiones activas, solo las que ya expiraron.
2.3. Gestionar logs y estadísticas
- Ve a Mejorar > Registros (Logs). Aquí se acumulan errores y advertencias. Puedes borrar todos los logs antiguos.
- Ve a Estadísticas > Estadísticas y en la parte superior derecha busca el botón "Vaciar". Esto borra todas las estadísticas acumuladas. Si no usas las estadísticas internas de PrestaShop, es recomendable hacerlo.
2.4. Optimizar las tablas desde el propio PrestaShop
En versiones recientes (1.7+), PrestaShop incluye una opción de mantenimiento:
- Ve a Mejorar > Mantenimiento.
- Activa el modo mantenimiento (desactiva la tienda durante unos minutos).
- Busca la opción "Optimizar base de datos". Ejecútala. Esto repara y optimiza las tablas automáticamente.
Paso 3: Uso de módulos especializados para optimización MySQL
Si quieres una optimización MySQL más profunda y automática, los módulos son tus mejores aliados. Son seguros y están diseñados para no romper nada.
Módulos recomendados (gratuitos y de pago):
- PrestaShop Cleaner (gratuito): Limpia tablas de sesiones, carritos, conexiones, logs, etc. Muy efectivo.
- Advanced Database Optimization (de pago): Ofrece programación de tareas, limpieza de tablas específicas y análisis de rendimiento.
- Disable the cache system (gratuito): Si no usas caché, este módulo ayuda a limpiar la tabla
ps_cache.
Cómo usar un módulo de limpieza:
- Instala el módulo desde el Back Office (Módulos > Catálogo de módulos).
- Configúralo. Por lo general, te permite seleccionar qué tablas limpiar y cada cuánto tiempo.
- Programa una limpieza automática semanal o mensual.
[WARNING] Antes de usar cualquier módulo, haz una copia de seguridad de tu base de datos. Así, si algo sale mal, puedes restaurar.
Paso 4: Optimización avanzada desde phpMyAdmin (para usuarios con algo de experiencia)
Si te sientes cómodo con SQL, puedes realizar tareas más finas. Siempre desde phpMyAdmin y con copia de seguridad previa.
4.1. Vaciar tablas de sesiones y conexiones
Ejecuta estas consultas SQL (reemplaza ps_ por el prefijo de tu tienda, que puede ser prestashop_ u otro):
TRUNCATE TABLE ps_connections;
TRUNCATE TABLE ps_connections_page;
TRUNCATE TABLE ps_guest;
TRUNCATE TABLE ps_statssearch;
TRUNCATE TABLE ps_sessions;
[INFO]
TRUNCATEvacía la tabla por completo, pero mantiene su estructura. Es más rápido queDELETE.
4.2. Optimizar todas las tablas (reorganizar datos)
Esta consulta repara y optimiza todas las tablas de tu base de datos:
OPTIMIZE TABLE ps_address, ps_alias, ps_attachment, ... (puedes poner todas las tablas separadas por comas)
O, más fácil, desde phpMyAdmin:
- Selecciona todas las tablas (marca la casilla superior).
- En el menú desplegable "Con seleccionados", elige "Optimizar tabla".
4.3. Eliminar revisiones de productos (si usas el historial)
PrestaShop guarda versiones antiguas de productos. Si no las necesitas, puedes borrarlas:
DELETE FROM ps_product_shop WHERE id_product NOT IN (SELECT id_product FROM ps_product);
DELETE FROM ps_product_lang WHERE id_product NOT IN (SELECT id_product FROM ps_product);
[WARNING] Esta consulta puede ser peligrosa. Asegúrate de que no tienes productos en borrador o desactivados que quieras conservar. Hazlo solo si sabes lo que haces.
Paso 5: Mantenimiento preventivo para evitar que la base de datos se hinche
Una vez optimizada, es clave mantenerla así. Sigue estas buenas prácticas:
5.1. Programa tareas de limpieza automáticas
Usa los cron jobs de tu hosting. Por ejemplo, en Syspanel (puerto 2106) puedes crear un cron que ejecute un script PHP o un comando SQL cada semana.
Un ejemplo de comando para ejecutar la optimización de tablas vía cron (si tienes acceso SSH):
mysqlcheck -u usuario -pcontraseña -o nombre_base_datos
5.2. Desactiva estadísticas internas si no las usas
Ve a Mejorar > Rendimiento y desactiva "Seguimiento de visitas" y "Estadísticas de búsqueda". Esto evita que se llenen las tablas ps_connections y ps_statssearch.
5.3. Limita los logs de errores
En Mejorar > Rendimiento > Logs, puedes configurar que solo se guarden los errores críticos, no los avisos.
5.4. Usa un sistema de caché externo
Además de optimizar la base de datos, activa la caché de PrestaShop (por ejemplo, Redis o Memcached). Esto reduce las consultas a MySQL drásticamente.
[TIP] Si tu hosting lo permite, activa Redis. Es uno de los mejores aliados para el rendimiento PrestaShop.
Preguntas frecuentes (FAQ) sobre optimización de base de datos en PrestaShop
¿Cada cuánto debo optimizar la base de datos?
Depende del tráfico. Para una tienda pequeña, una vez al mes es suficiente. Para una tienda con muchos visitantes, semanalmente. Lo ideal es automatizarlo con un cron.
¿Puedo romper mi tienda al limpiar la base de datos?
Sí, si borras datos incorrectos. Por eso siempre haz una copia de seguridad antes. Los módulos y las opciones nativas de PrestaShop son seguros.
¿Optimizar la base de datos mejora el SEO?
Indirectamente, sí. Google penaliza las páginas lentas. Una base de datos optimizada acelera la carga de tu tienda, lo que mejora la experiencia de usuario y, por tanto, el posicionamiento.
¿Qué hago si después de optimizar sigue lenta?
Puede que el problema no sea solo la base de datos. Revisa:
- El hosting (¿es compartido? ¿tiene recursos suficientes?).
- El tema (¿está bien codificado?).
- Los módulos (¿hay muchos? ¿alguno conflictivo?).
- La caché (¿está activada?).
¿Es necesario usar phpMyAdmin o puedo hacerlo desde el Back Office?
Puedes hacer una limpieza básica desde el Back Office (opciones de mantenimiento y módulos). Para una optimización MySQL más profunda, phpMyAdmin es más potente.
¿Cómo accedo a phpMyAdmin en Syspanel?
En Syspanel (puerto 2106), busca la sección "Bases de datos" o "MySQL". Allí encontrarás el enlace a phpMyAdmin. Si no lo ves, contacta con soporte.
Resumen y próximos pasos
Optimizar PrestaShop a nivel de base de datos es una tarea sencilla pero con un impacto enorme en la velocidad tienda. Siguiendo esta guía:
- Diagnostica el tamaño y las tablas problemáticas.
- Limpia desde el Back Office (carritos, sesiones, logs).
- Usa módulos especializados para automatizar.
- Optimiza tablas con phpMyAdmin (si te atreves).
- Mantén la base de datos limpia con tareas programadas.
No olvides que un rendimiento PrestaShop óptimo no solo depende de la base de datos. Combínalo con un buen hosting, un tema ligero y una caché eficiente. ¡Tu tienda volará y tus clientes te lo agradecerán!
[TIP FINAL] Si después de todo esto la tienda sigue lenta, revisa el uso de la CPU y RAM en el panel de control. A veces, el problema es que necesitas un plan de hosting superior. ¡No te desanimes!
