Cómo optimizar la base de datos de PrestaShop (limpieza y rendimiento)
¿Por qué tu PrestaShop va lento? El problema puede estar en la base de datos
Si notas que tu tienda online tarda en cargar, que el panel de administración va pesado o que las páginas de producto se quedan "pensando", es muy probable que el culpable sea tu base de datos. PrestaShop guarda absolutamente todo en MySQL: productos, pedidos, clientes, sesiones, mensajes, historiales y una larga lista de tablas temporales. Con el tiempo, esa información se acumula, se fragmenta y se llena de basura que ralentiza cada consulta.
Optimizar base de datos PrestaShop no es un lujo, es una necesidad si quieres mantener un buen rendimiento PrestaShop MySQL. Un buen mantenimiento puede reducir el tiempo de carga de tu tienda en más de un 50% en muchos casos. Y lo mejor de todo: no necesitas ser un experto en programación para hacerlo. En esta guía te voy a explicar, paso a paso y con un lenguaje muy sencillo, cómo limpiar y optimizar tu base de datos para que tu tienda vuele.
Señales de que tu base de datos necesita una limpieza urgente
Antes de ponernos manos a la obra, es importante que sepas identificar cuándo tu prestashop bd lenta está pidiendo a gritos una intervención. Estos son los síntomas más comunes:
- El tiempo de carga de las páginas ha aumentado notablemente en las últimas semanas.
- El panel de administración tarda en abrir secciones básicas como "Pedidos" o "Clientes".
- Las búsquedas internas de la tienda son lentas o incluso dan error.
- El uso de CPU del servidor se dispara sin motivo aparente.
- Recibes errores de "MySQL server has gone away" o "Too many connections".
- La copia de seguridad de la base de datos pesa muchísimo más de lo normal.
Si te identificas con varios de estos puntos, sigue leyendo. Vamos a solucionarlo.
Antes de empezar: haz una copia de seguridad (¡IMPORTANTE!)
[WARNING] Este paso es obligatorio. No lo saltes. Si algo sale mal durante la limpieza, podrías perder datos valiosos. Siempre, siempre, siempre haz una copia de seguridad completa de tu base de datos antes de tocar nada.
Para hacer la copia, tienes varias opciones:
-
Desde el panel de control de tu hosting: La mayoría de paneles tienen un apartado de "Bases de datos MySQL" con opción de exportar o hacer backup. Si usas Syspanel (el panel de tu hosting, que se accede por el puerto 2106), busca la sección de bases de datos y verás la opción de exportar. Es tan fácil como pulsar un botón.
-
Desde phpMyAdmin: Entra en tu phpMyAdmin, selecciona la base de datos de PrestaShop y haz clic en la pestaña "Exportar". Elige el método "Rápido" y formato SQL. Descarga el archivo y guárdalo en un lugar seguro.
-
Desde el propio PrestaShop: Ve a Parámetros avanzados > Base de datos y usa la herramienta de backup que incluye. Eso sí, esta opción puede fallar si la base de datos es muy grande, así que te recomiendo usar las dos anteriores.
[INFO] Guarda la copia en tu ordenador y también en la nube (Google Drive, Dropbox, etc.). Nunca está de más tener doble respaldo.
Limpiar base de datos PrestaShop: elimina la basura acumulada
1. Limpia las tablas de sesiones antiguas
PrestaShop guarda una sesión por cada visitante que entra en tu tienda. Si tienes mucho tráfico, estas tablas pueden llegar a tener cientos de miles de registros inútiles. Las sesiones caducan, pero los registros no se borran automáticamente.
Para limpiarlas, ve a tu phpMyAdmin y ejecuta esta consulta SQL:
DELETE FROM ps_connections WHERE date_add < DATE_SUB(NOW(), INTERVAL 30 DAY);
DELETE FROM ps_connections_page WHERE time_start < DATE_SUB(NOW(), INTERVAL 30 DAY);
DELETE FROM ps_guest WHERE id_guest NOT IN (SELECT id_guest FROM ps_connections);
DELETE FROM ps_sessions WHERE id_session NOT IN (SELECT id_session FROM ps_connections);
[TIP] Si tu tienda tiene muchos visitantes, te recomiendo ejecutar esta limpieza una vez al mes. Puedes programarla con un cron job si te atreves.
2. Vacía la tabla de "cart" (carritos) abandonados y antiguos
Los carritos que se crean y nunca llegan a convertirse en pedido se acumulan sin control. Cada carrito guarda información de productos, direcciones, etc., ocupando espacio y ralentizando las consultas.
Ejecuta esta consulta para eliminar carritos con más de 30 días de antigüedad:
DELETE FROM ps_cart WHERE date_add < DATE_SUB(NOW(), INTERVAL 30 DAY);
DELETE FROM ps_cart_product WHERE id_cart NOT IN (SELECT id_cart FROM ps_cart);
3. Limpia las tablas de mensajes y notificaciones antiguas
Los mensajes internos entre clientes y administradores, las notificaciones y los historiales de contacto se acumulan. No suelen ser muy grandes, pero si tu tienda lleva años activa, pueden sumar bastante.
DELETE FROM ps_message WHERE date_add < DATE_SUB(NOW(), INTERVAL 90 DAY);
DELETE FROM ps_contact_message WHERE date_add < DATE_SUB(NOW(), INTERVAL 90 DAY);
DELETE FROM ps_customer_message WHERE date_add < DATE_SUB(NOW(), INTERVAL 90 DAY);
4. Elimina los logs y registros de errores
PrestaShop guarda un registro de cada error que ocurre en la tienda. Si tienes un módulo con bugs o has tenido ataques, esta tabla puede crecer muchísimo.
TRUNCATE TABLE ps_log;
[WARNING] El comando TRUNCATE vacía la tabla por completo. Asegúrate de que no necesitas esos logs para depurar algo antes de ejecutarlo.
5. Limpia las tablas de "search index" y "search word"
El buscador de PrestaShop guarda un índice de todas las palabras de tus productos. Si has cambiado muchos productos o has eliminado otros, el índice queda desactualizado y ocupa espacio.
La forma más segura de limpiarlo es desde el panel de administración: Preferencias > Buscar > "Vaciar el índice del buscador". Y luego vuelve a indexar con "Añadir productos al índice".
Si prefieres hacerlo por SQL, puedes truncar estas tablas y luego reindexar:
TRUNCATE TABLE ps_search_index;
TRUNCATE TABLE ps_search_word;
Optimizar base de datos PrestaShop: el mantenimiento de tablas
Una vez que has eliminado la basura, es hora de optimizar las tablas que quedan. Esto es como desfragmentar un disco duro: reorganiza los datos para que las consultas sean más rápidas.
1. Optimiza todas las tablas de una vez
phpMyAdmin tiene una opción muy útil. Sigue estos pasos:
- Entra en tu phpMyAdmin y selecciona la base de datos de PrestaShop.
- Verás una lista de todas las tablas. Haz clic en "Seleccionar todo" (justo debajo de la lista).
- En el desplegable que dice "Con seleccionados", elige "Optimizar tabla".
Esto ejecutará el comando OPTIMIZE TABLE en todas las tablas. El proceso puede tardar unos minutos si la base de datos es grande.
2. Repara las tablas dañadas
Si alguna tabla está corrupta, PrestaShop puede dar errores aleatorios. En el mismo desplegable de phpMyAdmin, elige "Reparar tabla" en lugar de "Optimizar tabla".
[TIP] Si no sabes si tienes tablas dañadas, ejecuta primero "Comprobar tabla". Te dirá si hay algún problema.
3. Ejecuta el comando ANALYZE TABLE
Este comando actualiza las estadísticas que MySQL usa para planificar las consultas. Es especialmente útil después de borrar muchos datos.
ANALYZE TABLE ps_product, ps_product_attribute, ps_orders, ps_customer;
Configuraciones avanzadas para mejorar el rendimiento PrestaShop MySQL
1. Activa el caché de MySQL
PrestaShop tiene un sistema de caché interno que puedes activar en Parámetros avanzados > Rendimiento. Elige "Caché de consultas" o "Caché de resultados" y verás una mejora notable.
2. Usa el motor InnoDB
Si tu base de datos usa MyISAM en algunas tablas, considera migrar a InnoDB. Es más eficiente para transacciones y soporta mejor las consultas complejas de PrestaShop. Puedes hacerlo desde phpMyAdmin: selecciona la tabla, ve a "Operaciones" y cambia el motor.
3. Limita el número de revisiones de productos
PrestaShop guarda un historial de revisiones de cada producto. Si editas mucho tus productos, esta tabla puede crecer sin control. Puedes limitarlo desde Parámetros avanzados > Rendimiento > "Número de revisiones de productos" y poner un número bajo, como 5.
4. Mantén los módulos de estadísticas bajo control
Los módulos de estadísticas de PrestaShop son muy voraces. Si no los usas, desactívalos. Si los usas, programa su limpieza periódica.
Herramientas y plugins que te facilitan la vida
Si no quieres estar ejecutando consultas SQL manualmente, existen módulos que automatizan todo el proceso:
- PrestaShop Cleaner: Elimina datos temporales, logs y carritos abandonados con un solo clic.
- Advanced Database Cleaner: Más completo, permite limpiar tablas específicas y programar limpiezas automáticas.
- MySQL Performance: Analiza tu base de datos y te recomienda índices y optimizaciones.
[INFO] Antes de instalar cualquier módulo de terceros, verifica que sea compatible con tu versión de PrestaShop y que tenga buenas valoraciones. Un módulo mal programado puede ser peor que el problema que intentas solucionar.
Mantenimiento preventivo: la clave para que no vuelva a pasar
Limpiar una vez no es suficiente. La base de datos se vuelve a ensuciar con el uso diario. Te recomiendo establecer una rutina:
- Semanal: Revisa el tamaño de las tablas de sesiones y logs.
- Mensual: Ejecuta la limpieza de sesiones, carritos y mensajes antiguos.
- Trimestral: Optimiza todas las tablas y ejecuta ANALYZE TABLE.
- Cada 6 meses: Revisa si tienes tablas que ya no se usan (por módulos desinstalados) y elimínalas.
Puedes automatizar muchas de estas tareas con cron jobs si tu hosting lo permite. En Syspanel (accesible por el puerto 2106) tienes un apartado de "Tareas programadas" donde puedes crear cron jobs fácilmente.
Preguntas frecuentes (FAQ)
¿Cada cuánto tiempo debo optimizar la base de datos de PrestaShop?
Depende del tamaño de tu tienda y el tráfico. Como norma general, una limpieza mensual es suficiente para tiendas pequeñas y medianas. Si tienes mucho tráfico o muchos productos, hazlo cada dos semanas.
¿Puedo optimizar la base de datos sin entrar en phpMyAdmin?
Sí, puedes usar módulos como PrestaShop Cleaner que hacen el trabajo desde el panel de administración. También puedes crear scripts PHP que ejecuten las consultas automáticamente.
¿Es normal que la base de datos de PrestaShop sea tan grande?
PrestaShop es una plataforma que tiende a acumular muchos datos, especialmente si usas muchos módulos. Una base de datos de 500 MB en una tienda con 2000 productos no es raro. Lo importante es que no crezca sin control.
¿La optimización de la base de datos afecta al SEO?
Sí, indirectamente. Una tienda más rápida es mejor valorada por Google, mejora la experiencia del usuario y reduce la tasa de rebote. Así que optimizar base de datos prestashop también es una estrategia SEO.
¿Qué hago si después de la limpieza la tienda sigue lenta?
Puede que el problema no sea solo la base de datos. Revisa las imágenes, el caché de página, la configuración del servidor y si tienes módulos pesados. También puedes considerar contratar un hosting mejor o usar una CDN.
Conclusión: tu tienda merece ir rápida
Limpiar base de datos PrestaShop y mantenerla optimizada es una de las tareas de mantenimiento más importantes que puedes hacer por tu tienda online. No solo mejora la velocidad de carga, sino que también reduce el consumo de recursos del servidor, evita errores y mejora la experiencia de tus clientes.
No necesitas ser un experto en MySQL para hacerlo. Con las consultas SQL que te he dado y una rutina de mantenimiento mensual, tu tienda estará siempre en plena forma. Y recuerda: si usas Syspanel como panel de control, el acceso es por el puerto 2106 y ahí encontrarás todas las herramientas de gestión de bases de datos que necesitas.
Empieza hoy mismo con la limpieza. Tus clientes (y Google) lo agradecerán.
