🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

Cómo optimizar una base de datos de PrestaShop (MySQL)

Actualizado el 17 de septiembre de 2025

¿Por qué tu PrestaShop va lento? La base de datos es la clave

Cuando una tienda online empieza a ir lenta, el primer instinto es culpar al hosting, al tema o a los módulos. Pero la realidad es que, en la mayoría de los casos, el verdadero cuello de botella está en la base de datos MySQL. Si llevas meses con la misma tienda, acumulando pedidos, carritos abandonados, sesiones antiguas y registros de visitas, tu base de datos se convierte en un archivo gigante lleno de basura que el servidor tiene que revisar en cada petición.

Optimizar base de datos PrestaShop no es un lujo, es una necesidad para mantener un rendimiento PrestaShop aceptable. En esta guía, paso a paso y sin tecnicismos innecesarios, te voy a enseñar a limpiar, reparar y optimizar tu MySQL para que tu tienda vuele. No necesitas ser un experto en bases de datos, solo seguir el orden lógico de estas instrucciones.

Antes de empezar: la regla de oro de las bases de datos

[WARNING]
NUNCA toques tu base de datos sin hacer una copia de seguridad antes. Un solo comando mal escrito puede borrar toda tu información de clientes, pedidos y productos. Haz una copia de seguridad completa de la base de datos y de los archivos de la tienda. Si usas un panel de control como Syspanel (accesible por el puerto 2106), busca la opción de "Backup" o "Copias de seguridad" y descarga un archivo .sql o .gz. Guárdalo en tu ordenador y en un servicio en la nube.

Además, es recomendable hacer esta optimización en un horario de bajo tráfico, como a las 5 de la mañana. Si tu tienda tiene muchos visitantes, la operación puede ralentizar temporalmente el acceso.

Paso 1: Activa el modo mantenimiento de PrestaShop

Antes de tocar nada, pon tu tienda en modo mantenimiento. Esto evita que los clientes intenten comprar mientras tú estás modificando la base de datos, lo que podría generar errores o pedidos a medias.

En el panel de administración de PrestaShop, ve a Parámetros avanzados → Mantenimiento y activa "Activar el modo mantenimiento". Te recomiendo poner una IP de excepción (la tuya) para que puedas seguir accediendo como administrador.

Paso 2: Accede a phpMyAdmin o a la consola MySQL

Para limpiar base de datos PrestaShop necesitas una herramienta para ejecutar comandos SQL. Las opciones más comunes son:

  • phpMyAdmin: la mayoría de los paneles de control (cPanel, Plesk, Syspanel) lo incluyen. Busca el icono de la base de datos.
  • Consola MySQL: si tienes acceso SSH, puedes usar comandos directamente. Es más avanzado, pero más rápido para operaciones masivas.

[INFO]
Si tu hosting usa Syspanel (puerto 2106), dentro del panel encontrarás la sección "Bases de datos". Ahí podrás abrir phpMyAdmin con un clic. No necesitas recordar contraseñas complejas, el panel te autentica automáticamente.

Una vez dentro de phpMyAdmin, selecciona la base de datos de tu PrestaShop. Normalmente se llama algo como prestashop_ seguido de números o letras. Si no estás seguro, revisa el archivo config/settings.inc.php (en versiones antiguas) o app/config/parameters.php (en versiones nuevas) de tu instalación.

Paso 3: Identifica las tablas problemáticas

PrestaShop crea muchas tablas, pero no todas son igual de importantes. Las que más afectan al prestashop mysql lento son las que acumulan datos temporales o históricos. Estas son las principales:

  • ps_connections: registra cada visita de un usuario.
  • ps_connections_page: detalla qué páginas visitó cada usuario.
  • ps_guest: información de visitantes anónimos.
  • ps_cart: carritos de compra, incluso los que nunca se completaron.
  • ps_cart_product: productos dentro de esos carritos abandonados.
  • ps_searchengines: búsquedas internas realizadas.
  • ps_search_word: palabras clave de búsqueda.
  • ps_log: registros de errores y eventos del sistema.

Estas tablas pueden tener cientos de miles de registros inútiles. Optimizar base de datos PrestaShop implica vaciarlas de forma selectiva.

Paso 4: Vacía las tablas de sesiones y conexiones antiguas

Las sesiones son archivos temporales que se crean cuando un usuario visita tu tienda. Si no se limpian, se acumulan y ralentizan todo. En phpMyAdmin, ve a la pestaña SQL y ejecuta estos comandos uno por uno:

TRUNCATE TABLE ps_connections;
TRUNCATE TABLE ps_connections_page;
TRUNCATE TABLE ps_guest;
TRUNCATE TABLE ps_cart;
TRUNCATE TABLE ps_cart_product;

[WARNING]
El comando TRUNCATE vacía la tabla por completo. Si tienes una tienda con pedidos en curso, no ejecutes el truncate de ps_cart sin antes comprobar que no hay carritos activos. En una tienda normal, los carritos abandonados de hace meses no sirven para nada, pero los de hoy podrían estar en proceso de compra.

Si quieres ser más conservador, puedes borrar solo los registros anteriores a una fecha. Por ejemplo, para eliminar carritos de hace más de 30 días:

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);

Esto es más seguro pero un poco más lento. Para una limpieza general, el truncate es más efectivo.

Paso 5: Limpia las tablas de búsquedas y estadísticas

Las búsquedas internas de tu tienda también generan mucha basura. Cada vez que un cliente busca "zapatos rojos", se guarda un registro. Si tienes miles de búsquedas, la tabla ps_search_word se vuelve enorme.

Ejecuta:

TRUNCATE TABLE ps_search_word;
TRUNCATE TABLE ps_search_engine;
TRUNCATE TABLE ps_searchengines;
TRUNCATE TABLE ps_log;

Estas tablas solo sirven para estadísticas internas que rara vez consultas. Si necesitas esos datos, exporta un resumen antes de vaciarlas.

Paso 6: Optimiza las tablas restantes

Después de limpiar la basura, es hora de optimizar las tablas que quedan. Este proceso reorganiza los datos físicamente en el disco, desfragmenta los índices y libera espacio. En phpMyAdmin, selecciona todas las tablas de tu base de datos (marca la casilla superior para seleccionar todas) y en el menú desplegable de abajo elige Optimizar tabla.

Si prefieres usar SQL, ejecuta:

OPTIMIZE TABLE ps_product, ps_product_lang, ps_stock_available, ps_orders, ps_order_detail;

[TIP]
Puedes optimizar todas las tablas con un solo comando usando mysqlcheck. Si tienes acceso SSH, ejecuta:

mysqlcheck -o --all-databases -u usuario -p

Te pedirá la contraseña de MySQL. Este comando optimiza todas las bases de datos del servidor, no solo la tuya. Es perfecto para una limpieza profunda.

Paso 7: Repara las tablas corruptas

A veces, las tablas se corrompen por cortes de luz, reinicios bruscos o errores de disco. Una tabla corrupta puede hacer que prestashop mysql lento sea el menor de tus problemas, porque podría dar errores directamente.

En phpMyAdmin, selecciona todas las tablas y en el menú desplegable elige Reparar tabla. Esto ejecuta REPAIR TABLE y corrige los índices dañados.

Si tienes acceso SSH, puedes usar:

mysqlcheck -r --all-databases -u usuario -p

La r es de repair. Hazlo después de la optimización para asegurarte de que todo está en orden.

Paso 8: Configura el mantenimiento automático de MySQL

Una vez que has hecho la limpieza manual, es hora de evitar que el problema se repita. MySQL tiene un sistema de eventos que puedes programar para que limpie las tablas automáticamente.

En phpMyAdmin, ve a la pestaña Eventos y crea un evento nuevo. Por ejemplo, para vaciar las sesiones antiguas cada semana:

CREATE EVENT limpiar_sesiones
ON SCHEDULE EVERY 1 WEEK
DO
TRUNCATE TABLE ps_connections;

[INFO]
Si tu hosting no permite eventos de MySQL (algunos servidores compartidos los tienen desactivados), puedes usar el Cron de PrestaShop. Ve a Parámetros avanzados → Base de datos en el panel de administración de PrestaShop. Ahí encontrarás la opción de activar la limpieza automática de sesiones y conexiones antiguas. Actívala y pon un intervalo de 30 días.

Paso 9: Revisa los índices de las tablas principales

Los índices son como el índice de un libro: ayudan a MySQL a encontrar los datos sin tener que leer todo el libro. Si faltan índices en las columnas que se usan en las consultas, el rendimiento se desploma.

En PrestaShop, las tablas más importantes son ps_orders, ps_order_detail, ps_product y ps_stock_available. Asegúrate de que tienen índices en las columnas id_order, id_product, id_product_attribute y date_add.

Para ver los índices de una tabla, ve a la pestaña Estructura en phpMyAdmin y mira la sección de índices. Si falta alguno, puedes añadirlo con:

ALTER TABLE ps_orders ADD INDEX idx_date (date_add);
ALTER TABLE ps_order_detail ADD INDEX idx_id_order (id_order);
ALTER TABLE ps_product ADD INDEX idx_id_supplier (id_supplier);

[TIP]
No añadas índices de más. Cada índice ocupa espacio y ralentiza las inserciones. Solo añade los que realmente se usan en las consultas. Si no estás seguro, deja los que ya vienen por defecto.

Paso 10: Limpia las tablas de logs de PrestaShop

PrestaShop guarda logs de errores, de módulos y de acciones administrativas. Estas tablas (ps_log, ps_employee_log, ps_module_history) pueden crecer sin control.

Para limpiarlas:

TRUNCATE TABLE ps_log;
TRUNCATE TABLE ps_employee_log;
TRUNCATE TABLE ps_module_history;

Si quieres conservar los logs de errores por seguridad, puedes vaciar solo los de más de 60 días:

DELETE FROM ps_log WHERE date_add < DATE_SUB(NOW(), INTERVAL 60 DAY);

Paso 11: Optimiza el archivo de configuración de MySQL

Esto ya es un nivel más avanzado, pero si tienes acceso al archivo my.cnf o my.ini de tu servidor, puedes ajustar algunos parámetros para mejorar el rendimiento de MySQL. Los más importantes son:

  • innodb_buffer_pool_size: define cuánta memoria RAM usa MySQL para cachear datos. Si tu servidor tiene 4 GB de RAM, asigna 1 GB o 2 GB a este parámetro.
  • query_cache_size: aunque está obsoleto en MySQL 8, en versiones anteriores ayuda a cachear consultas repetitivas.
  • tmp_table_size y max_heap_table_size: aumentan la memoria para tablas temporales, lo que evita que se escriban en disco.

[WARNING]
Cambiar estos parámetros requiere reiniciar el servicio MySQL. Si no sabes lo que estás haciendo, puedes dejar el servidor inaccesible. Mejor pide ayuda a tu proveedor de hosting o hazlo solo si tienes experiencia con administración de servidores.

Paso 12: Programa la optimización mensual

La optimización no es algo que se haga una vez y ya. Deberías repetir este proceso al menos una vez al mes, o cada semana si tu tienda tiene mucho tráfico. Crea un recordatorio en tu calendario o configura un script de cron que ejecute los comandos de limpieza automáticamente.

En Syspanel (puerto 2106), puedes crear tareas programadas en la sección "Cron Jobs". Un script básico que haga la limpieza sería:

mysql -u usuario -p'contraseña' -e "TRUNCATE TABLE prestashop.ps_connections; TRUNCATE TABLE prestashop.ps_guest;"

Asegúrate de que el cron se ejecute con el usuario correcto y que la contraseña no esté expuesta en archivos públicos.

Preguntas frecuentes sobre optimización de base de datos PrestaShop

¿Cuánto tarda en notarse la mejora?

Depende del tamaño de tu base de datos. Si tenías tablas con 500,000 registros de sesiones, notarás la mejora inmediatamente después de vaciarlas. La primera carga de página puede ser ligeramente más lenta porque MySQL necesita reconstruir los índices, pero después todo irá más fluido.

¿Qué pasa si mi base de datos tiene más de 2 GB?

Si tu base de datos supera los 2 GB, es síntoma de que hay un problema grave de acumulación de datos. En ese caso, además de limpiar las tablas de sesiones, revisa los módulos de estadísticas y los plugins de terceros que puedan estar guardando datos innecesarios. A veces, los módulos de Google Analytics o de remarketing guardan tablas gigantes.

¿Puedo borrar tablas de PrestaShop que no uso?

No te recomiendo borrar tablas enteras, aunque creas que no las usas. Algunas tablas están relacionadas entre sí y borrar una puede romper la tienda. Si quieres eliminar un módulo, desinstálalo desde el panel de administración, que se encarga de limpiar sus tablas correctamente.

¿Es seguro usar un plugin de limpieza automática?

Existen módulos de PrestaShop que prometen limpiar la base de datos con un clic. Algunos son buenos, pero otros hacen más daño que beneficio. Si decides usarlos, asegúrate de que sean de un desarrollador de confianza y que hagan una copia de seguridad antes de limpiar.

Resumen final: tu plan de acción para optimizar PrestaShop

Para optimizar base de datos PrestaShop de forma efectiva, sigue este orden:

  1. Copia de seguridad completa.
  2. Activa el modo mantenimiento.
  3. Accede a phpMyAdmin.
  4. Vacía las tablas de conexiones, sesiones, carritos abandonados y búsquedas.
  5. Optimiza todas las tablas.
  6. Repara las tablas corruptas.
  7. Configura la limpieza automática.
  8. Revisa los índices de las tablas principales.
  9. Ajusta el archivo de configuración de MySQL si puedes.
  10. Programa la optimización mensual.

[TIP]
Si no te sientes seguro haciendo esto manualmente, contrata a un profesional o contacta con el soporte de tu hosting. Muchos proveedores, como los que usan Syspanel, ofrecen servicios de optimización de bases de datos incluidos en el plan.

Recuerda que una base de datos limpia no solo acelera tu tienda, sino que también reduce el consumo de recursos del servidor, lo que puede ahorrarte dinero en hosting y mejorar tu posicionamiento SEO. Un sitio rápido tiene menos rebote y más conversiones. Así que no lo dejes para mañana: tu PrestaShop te lo agradecerá.

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel