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

Cómo optimizar el rendimiento de MySQL en PrestaShop (configuración básica)

Actualizado el 18 de octubre de 2025

¿Tu tienda PrestaShop va lenta? Si has notado que las páginas tardan en cargar, que el panel de administración se bloquea o que las visitas aumentan pero el rendimiento no acompaña, es muy probable que la base de datos MySQL esté pidiendo a gritos una optimización. No te preocupes, no necesitas ser un gurú de la programación para aplicar una configuración básica que marque una diferencia notable. En esta guía, paso a paso y sin tecnicismos innecesarios, vamos a desgranar cómo optimizar MySQL PrestaShop para que tu tienda vuele.

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

Piensa en MySQL como el cerebro de tu tienda. Cada producto, cada cliente, cada pedido, cada sesión de usuario y cada configuración se guarda en tablas dentro de la base de datos. Cuando un visitante entra en tu web, PrestaShop hace decenas de consultas a MySQL para mostrar la información. Si esas consultas son lentas o el servidor no está bien ajustado, el cuello de botella es inmediato.

El rendimiento de MySQL en PrestaShop no es solo cosa de servidores potentes. De hecho, un servidor con mucha RAM puede ir lento si la configuración de MySQL está pensada para un blog pequeño. La clave está en ajustar los parámetros del motor de base de datos a las necesidades reales de tu tienda.

[INFO] Este artículo está pensado para tiendas que usan un hosting VPS o dedicado, donde tienes acceso a los archivos de configuración. Si estás en un hosting compartido, los ajustes de MySQL suelen estar bloqueados, pero muchas de las prácticas de limpieza de tablas sí las puedes aplicar.

Antes de tocar nada: prepara el terreno

La optimización de la base de datos de PrestaShop tiene dos frentes: la limpieza interna (dentro de la tienda) y la configuración del servidor (fuera de la tienda). Lo ideal es empezar por la limpieza, porque una base de datos llena de basura no se arregla solo con más memoria.

Haz una copia de seguridad completa

Este es el paso más importante y no negociable. Antes de cambiar cualquier valor o ejecutar cualquier consulta SQL, necesitas un respaldo. Puedes hacerlo desde el panel de control de tu hosting (como Syspanel) o usando herramientas como phpMyAdmin. Exporta la base de datos completa a un archivo .sql y guárdalo en un lugar seguro.

[WARNING] Un error en una consulta SQL o en la configuración puede dejar tu tienda inaccesible. La copia de seguridad es tu salvavidas. No la saltes.

Activa el modo mantenimiento

Mientras trabajas en la optimización, es recomendable que tu tienda esté en modo mantenimiento para evitar que los clientes realicen pedidos mientras modificas la estructura de datos. Puedes activarlo desde el panel de administración de PrestaShop: Parámetros Avanzados > Mantenimiento.

Paso 1: Limpieza interna de la base de datos (PrestaShop Database Optimization)

Antes de tocar la configuración del servidor, vamos a limpiar la casa. PrestaShop acumula mucha información innecesaria con el tiempo: sesiones antiguas, carritos abandonados, tablas temporales y registros de errores. Esta limpieza es la base para mejorar MySQL PrestaShop.

Eliminar sesiones caducadas

Las sesiones son archivos temporales que se crean cuando un usuario visita tu tienda. Con el tiempo, se acumulan cientos de miles de sesiones que ya no sirven para nada. PrestaShop tiene una función nativa para limpiarlas, pero muchas veces no se ejecuta con la frecuencia necesaria.

Puedes hacerlo manualmente desde phpMyAdmin ejecutando esta consulta SQL:

DELETE FROM ps_connections WHERE date_add < NOW() - INTERVAL 30 DAY;
DELETE FROM ps_connections_page WHERE time_start < NOW() - INTERVAL 30 DAY;
DELETE FROM ps_guest WHERE id_guest NOT IN (SELECT id_guest FROM ps_connections);
DELETE FROM ps_sessions WHERE last_updated < NOW() - INTERVAL 30 DAY;

[TIP] El prefijo ps_ puede variar en tu instalación. Si no estás seguro, revisa el archivo parameters.php de tu PrestaShop.

Vaciar carritos abandonados

Los carritos que llevan meses sin completarse son un lastre. Cada carrito ocupa espacio en varias tablas relacionadas. Ejecuta una consulta para eliminarlos:

DELETE FROM ps_cart WHERE date_upd < NOW() - INTERVAL 30 DAY;
DELETE FROM ps_cart_product WHERE id_cart NOT IN (SELECT id_cart FROM ps_cart);

Limpiar logs y tablas de seguimiento

PrestaShop registra cada visita, cada búsqueda y cada error. Esa información es útil para el SEO, pero los registros antiguos solo ralentizan las consultas. Puedes truncar las tablas de logs:

TRUNCATE TABLE ps_log;
TRUNCATE TABLE ps_search_engine;
TRUNCATE TABLE ps_connections;
TRUNCATE TABLE ps_connections_page;
TRUNCATE TABLE ps_connections_source;

[WARNING] Truncar elimina todos los datos de esas tablas. Si necesitas los datos de conexiones para análisis, mejor usa la opción de borrado por fecha.

Optimizar todas las tablas

Una vez limpias, es hora de desfragmentar y optimizar las tablas. Esto es como desfragmentar un disco duro: reorganiza los datos para que las consultas sean más rápidas. En phpMyAdmin, selecciona todas las tablas de la base de datos y en el desplegable inferior elige "Optimizar tablas". O también puedes ejecutar:

OPTIMIZE TABLE ps_product, ps_product_lang, ps_category, ps_category_lang, ps_stock_available;

Paso 2: Configuración básica de MySQL en el servidor

Ahora sí, pasamos a la parte jugosa. La configuración de MySQL se controla en un archivo llamado my.cnf (en Linux) o my.ini (en Windows). La ubicación típica en un VPS es /etc/mysql/my.cnf o /etc/my.cnf. Si usas Syspanel, puedes acceder al servidor por SSH y editarlo con nano o vim.

[INFO] El acceso por SSH es esencial para este paso. Si no sabes usarlo, pide a tu proveedor de hosting que te guíe. Recuerda que Syspanel es el panel de control que usa el puerto 2106 para su interfaz web, pero el SSH usa el puerto 22 por defecto.

Los parámetros clave que debes revisar

No necesitas tocar decenas de variables. Con ajustar estos cinco parámetros básicos verás una mejora del 80% en el rendimiento de MySQL para PrestaShop.

1. innodb_buffer_pool_size

Este es el parámetro más importante. Define cuánta memoria RAM dedicará MySQL a almacenar los datos y los índices en caché. Si es demasiado pequeño, MySQL tendrá que leer del disco constantemente, lo que es lentísimo.

Regla general: Asigna entre el 60% y el 70% de la RAM total del servidor (si solo tienes MySQL corriendo). Por ejemplo, si tu VPS tiene 8 GB de RAM, asigna 5 GB.

innodb_buffer_pool_size = 5G

2. query_cache_size

Este parámetro almacena el resultado de las consultas más frecuentes para no tener que volver a ejecutarlas. En versiones antiguas de MySQL era muy útil, pero en MySQL 8.0 se eliminó. Si usas MariaDB, todavía funciona.

query_cache_type = 1
query_cache_size = 64M

3. max_connections

Este valor limita el número máximo de conexiones simultáneas a la base de datos. Si tu tienda recibe muchos visitantes y ves errores de "Too many connections", necesitas subirlo. Pero ojo, cada conexión consume memoria.

max_connections = 150

4. tmp_table_size y max_heap_table_size

PrestaShop crea tablas temporales para ordenar y agrupar datos. Si son demasiado pequeñas, MySQL las convierte en tablas en disco, lo cual es muy lento. Aumenta estos valores para que se mantengan en memoria.

tmp_table_size = 64M
max_heap_table_size = 64M

5. innodb_log_file_size

Este es el tamaño del registro de transacciones. Si es demasiado pequeño, MySQL escribe constantemente en el log y se vuelve lento. Un valor de 256 MB es un buen punto de partida para tiendas medianas.

innodb_log_file_size = 256M

Cómo aplicar los cambios

Después de editar el archivo my.cnf, debes reiniciar el servicio de MySQL. Desde la terminal:

sudo systemctl restart mysql

Si usas MariaDB, el comando es:

sudo systemctl restart mariadb

[WARNING] Al reiniciar MySQL, tu tienda estará sin conexión a la base de datos durante unos segundos. Hazlo en horas de baja afluencia.

Paso 3: Ajustes específicos en PrestaShop para el rendimiento de la base de datos

No todo es configuración del servidor. PrestaShop tiene opciones internas que afectan directamente a cómo interactúa con MySQL. Vamos a ajustarlas para optimizar MySQL PrestaShop desde el panel de administración.

Activar la caché de MySQL

En Parámetros Avanzados > Rendimiento, encontrarás la opción "Caché". Actívala y elige "Caché de consultas MySQL". Esto almacena en memoria las consultas más repetidas, lo que reduce la carga en el servidor.

[TIP] Si tu hosting no soporta caché de consultas, puedes probar con "Caché de archivos". Es menos eficiente pero mejor que nada.

Desactivar variables no usadas

Revisa en Parámetros Avanzados > Rendimiento las opciones de "Combinar JavaScript" y "Combinar CSS". Aunque no es directamente MySQL, reduce el número de peticiones al servidor y la carga general.

Limitar el número de productos mostrados en el listado

Cada producto que se muestra en una categoría requiere una consulta a MySQL. Si tienes miles de productos y muestras 50 por página, estás haciendo consultas pesadísimas. Reduce el número de productos por página a 12 o 24. Esto se configura en Parámetros Avanzados > Rendimiento > Prestaciones.

Usar el modo "No guardar consultas en caché" solo para desarrollo

A veces, por error, dejamos activado el modo de depuración que registra cada consulta SQL. Ve a Parámetros Avanzados > Rendimiento y asegúrate de que "Modo de depuración" está en "No" o "Desactivado".

Paso 4: Monitorización y ajuste fino

Después de aplicar estos cambios, es crucial monitorizar el rendimiento. No basta con configurar una vez y olvidarse. La carga de tu tienda cambiará con el tiempo.

Herramientas de monitorización

Puedes usar la herramienta mysqltuner para analizar la salud de tu MySQL. Se instala fácilmente:

sudo apt install mysqltuner
sudo mysqltuner

Este script te dirá si tus valores son adecuados y te sugerirá ajustes. Es una guía excelente para mejorar MySQL PrestaShop de forma continua.

Observa los logs de errores

Revisa el archivo de logs de MySQL (/var/log/mysql/error.log) para detectar errores de conexión, tablas corruptas o consultas lentas. Si ves muchas consultas lentas, puedes activar el slow query log:

slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 2

Esto te dirá qué consultas tardan más de 2 segundos. Con esa información, puedes optimizar tablas específicas o añadir índices.

Preguntas frecuentes (FAQ) sobre optimizar MySQL PrestaShop

¿Cuánta RAM necesito para una tienda PrestaShop?

Depende del número de productos y del tráfico. Para una tienda pequeña (menos de 1000 productos y 500 visitas diarias), 2 GB de RAM pueden ser suficientes. Para tiendas medianas (5000 productos y 5000 visitas diarias), necesitarás al menos 4 GB. Si tienes más de 10,000 productos, ve a por 8 GB o más.

¿Es seguro usar el valor de innodb_buffer_pool_size al 70% de la RAM?

Sí, siempre que MySQL sea el único servicio que consuma RAM de forma significativa. Si también tienes Apache o Nginx, PHP y otros servicios, deja algo de margen. Empieza con el 50% y ve subiendo poco a poco.

Mi hosting usa Syspanel, ¿cómo accedo a la configuración de MySQL?

Syspanel es tu panel de control y su puerto de acceso es el 2106. Desde ahí puedes gestionar bases de datos, crear usuarios y acceder a phpMyAdmin. Sin embargo, para editar el archivo my.cnf necesitarás acceso SSH. Syspanel no incluye editor de configuración de MySQL, así que tendrás que usar la terminal.

¿Qué hago si mi tabla ps_product es gigante?

Si tienes decenas de miles de productos, la tabla ps_product puede tener millones de filas. La mejor solución es activar la caché de consultas y asegurarte de que el innodb_buffer_pool_size es suficiente para mantener toda la tabla en memoria. Si no puedes, considera usar un servidor con SSD NVMe para acelerar las lecturas de disco.

¿Debo desactivar los módulos que no uso?

Sí, cada módulo activo puede añadir consultas SQL adicionales. Desactiva los que no uses. Revisa la pestaña "Módulos" y desactiva todos los que no sean esenciales. Esto reduce la carga en MySQL directamente.

Consejos finales para un rendimiento óptimo

La optimización de MySQL en PrestaShop es un proceso continuo. No esperes resultados milagrosos en una sola tarde, pero con estos ajustes básicos notarás una mejora sustancial en la velocidad de carga.

Resumen de acciones clave:

  1. Limpia las tablas de sesiones, carritos y logs con consultas SQL regulares.
  2. Ajusta el innodb_buffer_pool_size al 60-70% de tu RAM.
  3. Activa la caché de consultas en PrestaShop.
  4. Reduce el número de productos por página.
  5. Monitoriza con mysqltuner una vez al mes.

[TIP] Programa una limpieza automática de la base de datos cada semana. Puedes crear un cron job que ejecute las consultas de borrado de sesiones y carritos antiguos. Así no tendrás que hacerlo manualmente.

Recuerda que una base de datos optimizada no solo acelera tu tienda, sino que también mejora tu posicionamiento SEO. Google penaliza las webs lentas, así que cada milisegundo cuenta. Con esta guía de prestashop database optimization, estás en el buen camino para ofrecer una experiencia de compra rápida y fluida a tus clientes. Si te surge alguna duda, déjala en los comentarios y te ayudaremos a resolverla. ¡Manos a la obra!

¿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