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

Optimizar base de datos MySQL en PrestaShop: Guía paso a paso

Actualizado el 28 de noviembre de 2025

¿Tu tienda PrestaShop va lenta? ¿Las páginas tardan una eternidad en cargar y pierdes ventas por la mala experiencia de usuario? A menudo, el culpable no es tu hosting ni tu conexión, sino la base de datos MySQL de PrestaShop. Con el tiempo, las tablas se llenan de residuos, registros temporales y datos obsoletos que lastran el rendimiento.

En esta guía paso a paso, te enseñaremos cómo optimizar base de datos MySQL en PrestaShop para que tu tienda vuele. No necesitas ser un experto en servidores, solo seguir estos pasos con cuidado. Al final, tendrás una tienda más rápida y eficiente.


¿Por qué es importante optimizar la base de datos en PrestaShop?

PrestaShop utiliza MySQL para almacenar todo: productos, pedidos, clientes, sesiones, estadísticas, etc. Con el tiempo, esta base de datos se fragmenta y acumula información innecesaria. Esto provoca:

  • Consultas más lentas (cada página tarda más en cargar).
  • Mayor consumo de recursos del servidor (CPU y RAM).
  • Aumento del tamaño de la base de datos, lo que ralentiza las copias de seguridad.
  • Posibles errores de timeout en operaciones críticas (como importar productos).

Optimizar la base de datos no solo mejora la velocidad, sino que también reduce la carga del servidor y alarga la vida de tu hosting.


Antes de empezar: precauciones esenciales

Antes de tocar nada, haz una copia de seguridad completa de tu base de datos. Un error puede dejar tu tienda inaccesible.

[WARNING] Sin copia de seguridad no hay perdón. Si algo sale mal, podrías perder datos de clientes, pedidos o configuración. No lo arriesgues.

Para hacer la copia, puedes usar:

  • phpMyAdmin: Exporta la base de datos completa en formato SQL.
  • cPanel: Usa la herramienta de copias de seguridad.
  • Syspanel (antes HestiaCP): Accede por el puerto 2106 y usa la sección de bases de datos para exportar.

Guarda el archivo en tu ordenador o en un almacenamiento externo.


Paso 1: Acceder a la base de datos de PrestaShop

Necesitas conectarte a tu base de datos MySQL. Hay varias formas:

Opción A: Usando phpMyAdmin (recomendado para principiantes)

  1. Entra a tu panel de control (cPanel, DirectAdmin, Syspanel, etc.).
  2. Busca el icono de phpMyAdmin (suele estar en la sección de Bases de Datos).
  3. Selecciona la base de datos de tu PrestaShop (normalmente tiene un nombre como tuweb_prestashop).

Opción B: Usando la línea de comandos (para usuarios avanzados)

Si tienes acceso SSH, puedes conectarte directamente:

mysql -u usuario -p

Luego escribe USE nombre_base_datos; para seleccionar la base de datos.


Paso 2: Optimizar tablas MySQL con el comando OPTIMIZE

El comando OPTIMIZE TABLE reconstruye las tablas para liberar espacio y mejorar la velocidad de las consultas.

Desde phpMyAdmin:

  1. Selecciona todas las tablas de tu base de datos (puedes marcar la casilla superior para seleccionar todas).
  2. En el menú desplegable "Con seleccionados", elige "Optimizar tabla".
  3. Espera a que termine (puede tardar unos minutos si la base de datos es grande).

Desde línea de comandos:

Ejecuta este comando para optimizar todas las tablas de una vez:

mysqlcheck -o nombre_base_datos -u usuario -p

Te pedirá la contraseña y luego optimizará todas las tablas automáticamente.


Paso 3: Limpiar tablas específicas de PrestaShop

Algunas tablas acumulan mucha basura con el tiempo. Estas son las que más afectan al rendimiento:

3.1. Tabla ps_connections y ps_connections_source

Guarda datos de las visitas de los clientes. Si no usas estadísticas avanzadas, puedes vaciarlas.

TRUNCATE TABLE ps_connections;
TRUNCATE TABLE ps_connections_source;

[INFO] Esto borrará el historial de visitas, pero no afecta a pedidos ni productos. Si necesitas estadísticas históricas, mejor no lo hagas.

3.2. Tabla ps_guest

Almacena información de visitantes anónimos. Puedes limpiarla:

TRUNCATE TABLE ps_guest;

3.3. Tabla ps_sessions (o ps_session)

Guarda las sesiones de los usuarios. Si tienes muchos visitantes, esta tabla crece rápido. Vacíala con:

TRUNCATE TABLE ps_session;

3.4. Tabla ps_search_index y ps_search_word

Son índices de búsqueda. Si has modificado productos o categorías, regenerarlos ayuda:

  1. Ve a tu panel de PrestaShop: Parámetros de la tienda > Búsqueda.
  2. Haz clic en "Reconstruir índice".
  3. Espera a que termine.

3.5. Tabla ps_log

Registra errores y eventos. Si tu tienda tiene muchos logs, puedes vaciarla:

TRUNCATE TABLE ps_log;

Paso 4: Configurar el motor de almacenamiento InnoDB

PrestaShop funciona mejor con el motor InnoDB que con MyISAM. InnoDB ofrece mejor rendimiento en consultas concurrentes y soporta transacciones.

Para comprobarlo:

  1. En phpMyAdmin, ve a la pestaña "Operaciones" de cada tabla.
  2. Mira el campo "Motor". Debe decir InnoDB. Si ves MyISAM, cámbialo.

Para convertir todas las tablas a InnoDB rápidamente, ejecuta este comando (ajusta el prefijo si tu base usa ps_):

ALTER TABLE ps_product ENGINE=InnoDB;
ALTER TABLE ps_category ENGINE=InnoDB;
ALTER TABLE ps_orders ENGINE=InnoDB;
...

Pero es más fácil usar un script PHP o una herramienta como MySQL Workbench para hacerlo masivamente.

[TIP] No conviertas tablas temporales o de caché a InnoDB, pueden perder rendimiento. Las tablas de sistema como ps_configuration sí deben ser InnoDB.


Paso 5: Activar el modo de mantenimiento de PrestaShop

Mientras optimizas, es recomendable poner tu tienda en modo mantenimiento para que los clientes no accedan a datos inconsistentes.

  1. En el panel de administración de PrestaShop, ve a Parámetros de la tienda > Mantenimiento.
  2. Activa "Activar modo mantenimiento".
  3. Puedes añadir una IP para que tú puedas acceder mientras está en mantenimiento.

Cuando termines la optimización, desactívalo.


Paso 6: Programar tareas de optimización automáticas

No querrás hacer esto manualmente cada mes. Puedes automatizarlo.

Opción A: Usando un cron job

Crea un script PHP que ejecute los comandos de optimización y lo programas en el servidor.

Ejemplo de script optimizar_db.php:

<?php
$host = 'localhost';
$user = 'tu_usuario';
$pass = 'tu_contraseña';
$db = 'tu_base_datos';

$conn = new mysqli($host, $user, $pass, $db);
if ($conn->connect_error) die("Conexión fallida: " . $conn->connect_error);

$tables = $conn->query("SHOW TABLES");
while ($row = $tables->fetch_row()) {
    $table = $row[0];
    $conn->query("OPTIMIZE TABLE $table");
    echo "Optimizada: $table\n";
}
$conn->close();
?>

Luego, desde tu panel de control (Syspanel, cPanel, etc.), programa un cron job para que se ejecute, por ejemplo, cada domingo a las 3:00 AM.

Opción B: Usando módulos de PrestaShop

Existen módulos como "Optimize Database" o "Cleaner" que permiten programar limpiezas periódicas desde el propio panel de administración. Busca en el marketplace oficial.


Paso 7: Monitorear el rendimiento después de la optimización

Después de aplicar los cambios, verifica que todo funciona correctamente:

  • Velocidad de carga: Usa herramientas como GTmetrix o PageSpeed Insights.
  • Tamaño de la base de datos: En phpMyAdmin, mira el tamaño total. Debería haber disminuido.
  • Errores: Revisa el log de errores de PrestaShop y del servidor.

Si notas alguna anomalía, restaura la copia de seguridad y revisa los pasos.


Preguntas frecuentes (FAQ)

¿Cada cuánto debo optimizar la base de datos?

Depende del tráfico. Una tienda pequeña puede hacerlo cada 1-3 meses. Una tienda grande con muchos pedidos, cada semana o quincena. Programa un cron mensual como mínimo.

¿Perderé datos de clientes o pedidos?

No, si solo limpias las tablas recomendadas (sesiones, logs, conexiones). Los datos críticos como productos, pedidos y clientes no se borran.

¿Puedo hacerlo desde el panel de Syspanel (HestiaCP)?

Sí. Accede a Syspanel por el puerto 2106 (ejemplo: https://tudominio.com:2106). Luego ve a Bases de datos, selecciona tu base y usa la opción de phpMyAdmin integrada.

¿Qué hago si la base de datos es muy grande y la optimización falla?

Prueba a optimizar tabla por tabla desde phpMyAdmin. También puedes aumentar el tiempo de ejecución en la configuración de PHP (max_execution_time). Si sigue fallando, contacta con tu soporte técnico.

¿Afecta la optimización al SEO?

Sí, indirectamente. Una tienda más rápida mejora la experiencia de usuario y el tiempo de carga, factores que Google valora para el posicionamiento. Así que optimizar la base de datos puede ayudar a tu SEO.


Conclusión

Optimizar la base de datos MySQL de PrestaShop es una tarea sencilla pero poderosa. Siguiendo esta guía paso a paso, reducirás el tamaño de tu base de datos, acelerarás las consultas y mejorarás la velocidad general de tu tienda. Recuerda siempre hacer una copia de seguridad antes de empezar y programar limpiezas periódicas para mantener el rendimiento a largo plazo.

Si tu tienda sigue lenta después de optimizar, revisa otros factores como el hosting, el tema o los módulos instalados. Pero sin duda, una base de datos limpia es el primer paso hacia una tienda rápida y exitosa.

¡Manos a la obra y a disfrutar de un PrestaShop más rápido!

¿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