Optimizar base de datos en PrestaShop: guía paso a paso
¿Notas que tu tienda PrestaShop va más lenta de lo normal? ¿Los pedidos tardan en procesarse o las páginas se cargan con cuentagotas? Uno de los culpables más habituales (y silenciosos) es una base de datos desordenada y llena de información basura.
En esta guía paso a paso, te voy a explicar cómo optimizar base de datos en PrestaShop de forma segura, incluso si no eres un experto técnico. Al final, tu tienda volverá a volar y la experiencia de usuario mejorará notablemente.
Vamos a ello.
¿Por qué es importante optimizar la base de datos en PrestaShop?
PrestaShop almacena absolutamente todo en su base de datos: productos, clientes, pedidos, sesiones, estadísticas, mensajes, búsquedas antiguas… Con el tiempo, este almacén se llena de datos innecesarios, registros huérfanos y tablas fragmentadas.
Esto provoca:
- Mayor tiempo de carga en el panel de administración y en la tienda.
- Consultas SQL más lentas.
- Mayor consumo de recursos en el servidor (CPU y RAM).
- Riesgo de errores en procesos como la generación de sitemaps o la sincronización con módulos.
Optimizar base de datos no solo mejora el rendimiento, sino que también reduce el espacio en disco y facilita las copias de seguridad.
Paso 1: Haz una copia de seguridad (¡obligatorio!)
Antes de tocar nada, siempre debes tener una copia de seguridad de tu base de datos. Un error puede dejarte la tienda inaccesible.
Cómo hacer la copia desde Syspanel (antes HestiaCP)
Si tu hosting utiliza Syspanel (acceso por puerto 2106), sigue estos pasos:
- Accede a tu panel Syspanel (ejemplo:
https://tudominio.com:2106). - Ve a Base de datos.
- Localiza la base de datos de tu PrestaShop.
- Haz clic en el icono de Exportar (normalmente una flecha hacia abajo).
- Descarga el archivo
.sqly guárdalo en un lugar seguro.
[INFO] Si no usas Syspanel, consulta con tu proveedor de hosting o utiliza la herramienta de exportación de phpMyAdmin.
Paso 2: Accede a tu base de datos con phpMyAdmin
phpMyAdmin es la herramienta más común para gestionar bases de datos MySQL. La mayoría de paneles de control (cPanel, Syspanel, DirectAdmin) la incluyen.
Desde Syspanel
- En Syspanel, ve a Base de datos.
- Junto a tu base de datos, haz clic en phpMyAdmin.
- Se abrirá una nueva pestaña con todas las tablas de PrestaShop.
[WARNING] Nunca modifiques tablas que no conozcas. Si no estás seguro, pregunta antes.
Paso 3: Limpia datos innecesarios
PrestaShop acumula mucha basura con el tiempo. Vamos a eliminar lo que no sirve.
3.1. Elimina pedidos cancelados y antiguos
Los pedidos cancelados o en estado "carrito abandonado" ocupan espacio. Puedes borrarlos directamente desde el panel de administración de PrestaShop, pero si son muchos, es más rápido desde phpMyAdmin.
Ejecuta esta consulta SQL (cambia ps_ por el prefijo de tus tablas si es diferente):
DELETE FROM ps_orders WHERE current_state IN (6, 7, 8, 9);
Explicación: Los números corresponden a estados como "Cancelado", "Reembolsado" o "Carrito abandonado". Puedes ver los IDs en la tabla
ps_order_state_lang.
3.2. Limpia sesiones caducadas
Las sesiones de usuarios que ya no están activos se acumulan. Ejecuta:
DELETE FROM ps_guest WHERE id_guest NOT IN (SELECT id_guest FROM ps_connections);
DELETE FROM ps_connections WHERE id_connections NOT IN (SELECT id_connections FROM ps_connections_page);
DELETE FROM ps_connections_source WHERE id_connections NOT IN (SELECT id_connections FROM ps_connections);
[TIP] Puedes repetir esta limpieza cada mes.
3.3. Vacía tablas de estadísticas y búsquedas antiguas
PrestaShop guarda cada búsqueda que hacen los clientes. Con el tiempo, esto se vuelve enorme.
TRUNCATE TABLE ps_search_word;
TRUNCATE TABLE ps_search_index;
TRUNCATE TABLE ps_statssearch;
[WARNING] Esto borra el historial de búsquedas, pero no afecta a la funcionalidad de búsqueda. Las palabras se volverán a indexar automáticamente.
3.4. Elimina mensajes de contacto antiguos
Si tienes muchos mensajes de formulario de contacto que ya no necesitas:
DELETE FROM ps_contact_message WHERE date_add < DATE_SUB(NOW(), INTERVAL 6 MONTH);
Ajusta el intervalo según tu criterio (3 meses, 1 año, etc.).
Paso 4: Optimiza las tablas (desfragmentación)
Cuando eliminas datos, las tablas quedan fragmentadas, como un disco duro lleno de huecos. La optimización reorganiza el espacio y acelera las consultas.
Desde phpMyAdmin
- Selecciona todas las tablas (marca la casilla superior).
- En el menú desplegable "Con seleccionadas", elige Optimizar tabla.
- Espera a que termine. Puede tardar unos segundos.
Desde SQL
Si prefieres una consulta, puedes ejecutar:
OPTIMIZE TABLE ps_address, ps_cart, ps_category, ps_connections, ps_customer, ps_orders, ps_product, ps_stock_available;
Pero lo más cómodo es optimizar todas las tablas de golpe. En phpMyAdmin, ve a la pestaña SQL y ejecuta:
OPTIMIZE TABLE `ps_address`, `ps_cart`, `ps_category`, `ps_connections`, `ps_customer`, `ps_orders`, `ps_product`, `ps_stock_available`;
[INFO] Puedes añadir más tablas separadas por comas. Si no sabes cuáles, optimiza todas.
Paso 5: Activa el modo de mantenimiento (opcional pero recomendado)
Mientras realizas la optimización, es mejor que los usuarios no estén navegando para evitar conflictos.
- En el panel de administración de PrestaShop, ve a Parámetros de la tienda > Mantenimiento.
- Activa el modo mantenimiento.
- Guarda los cambios.
Al terminar, desactívalo.
Paso 6: Revisa el tamaño de la base de datos antes y después
Para ver cuánto has ahorrado, en phpMyAdmin mira el tamaño total de la base de datos (suele aparecer en la parte inferior de la pantalla principal). Anótalo antes y después de la limpieza.
[TIP] Una base de datos optimizada puede reducir su tamaño entre un 20% y un 50% en tiendas con varios meses de actividad.
Paso 7: Automatiza la limpieza (para no olvidarte)
No querrás hacer esto a mano cada mes. Puedes programar una tarea (cron) que ejecute las consultas de limpieza automáticamente.
Desde Syspanel
- En Syspanel, ve a Tareas programadas.
- Añade una nueva tarea.
- En el campo de comando, escribe algo como:
mysql -u TU_USUARIO -pTU_CONTRASEÑA TU_BASE_DATOS < /ruta/a/archivo/limpieza.sql
Pero es más seguro crear un script PHP que ejecute las consultas.
[WARNING] Si no sabes programar, mejor contrata a un técnico o usa un módulo de PrestaShop que automatice la limpieza.
Preguntas frecuentes (FAQ)
¿Con qué frecuencia debo optimizar la base de datos?
Depende del volumen de tu tienda. Para tiendas pequeñas, una vez al mes es suficiente. Para tiendas con mucho tráfico, cada semana o quincena.
¿Puedo dañar mi tienda si ejecuto mal las consultas?
Sí, por eso es vital hacer una copia de seguridad antes. Si no estás seguro, pide ayuda a un profesional.
¿Qué pasa si mi base de datos es muy grande y la optimización tarda mucho?
Puede que el servidor tenga un tiempo máximo de ejecución. Si se corta, no pasa nada, pero la tabla no quedará optimizada. Puedes optimizar tabla por tabla.
¿El módulo de PrestaShop "Optimizar base de datos" sirve?
Hay módulos de pago que hacen esto automáticamente, pero muchos son básicos. La limpieza manual desde phpMyAdmin es más completa.
¿Afecta la optimización a los pedidos o clientes actuales?
No, siempre que no borres datos importantes. Solo eliminas registros obsoletos (sesiones, búsquedas, carritos abandonados, etc.).
Conclusión
Optimizar base de datos en PrestaShop es una tarea sencilla que mejora drásticamente el rendimiento de tu tienda. Con solo seguir estos pasos una vez al mes, notarás una carga más rápida, menos errores y una mejor experiencia para tus clientes.
Recuerda:
- Siempre haz copia de seguridad.
- Usa phpMyAdmin o Syspanel (puerto 2106) para acceder.
- Limpia sesiones, estadísticas y búsquedas antiguas.
- Optimiza (desfragmenta) las tablas.
- Automatiza si es posible.
Tu tienda PrestaShop te lo agradecerá. Y tus clientes, también.
¿Tienes dudas? Déjalas en los comentarios o contacta con nuestro equipo de soporte. ¡Estamos aquí para ayudarte!
