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

Cómo optimizar una base de datos MySQL para PrestaShop

Actualizado el 29 de marzo de 2026

¿Tu tienda PrestaShop va más lenta de lo que te gustaría? ¿Los productos tardan en cargarse o el panel de administración se vuelve pesado? Muchas veces, el cuello de botella no está en el código o en el hosting, sino en la base de datos. En este artículo te voy a enseñar, paso a paso y en lenguaje sencillo, cómo optimizar MySQL para que tu PrestaShop vuele. Vamos a centrarnos en técnicas que cualquier usuario, incluso sin ser experto en bases de datos, puede aplicar para mejorar el rendimiento base de datos.

¿Por qué es importante optimizar MySQL en PrestaShop?

PrestaShop es un sistema de gestión de contenidos (CMS) potente y flexible, pero eso tiene un precio: cada vez que un cliente visita tu tienda, busca un producto o hace un pedido, se ejecutan múltiples consultas a la base de datos. Si tu PrestaShop base de datos no está bien ajustada, esas consultas pueden tardar segundos en resolverse, lo que se traduce en una experiencia de usuario terrible y, por supuesto, en una pérdida de ventas.

Optimizar MySQL no solo acelera la carga de las páginas, sino que también reduce la carga del servidor, permitiendo que tu tienda pueda manejar más visitantes simultáneos sin colapsar. Es como hacerle una limpieza a fondo y una puesta a punto a tu coche.

1. Diagnóstico inicial: ¿cómo saber si tu base de datos necesita una optimización?

Antes de lanzarnos a hacer cambios, es importante saber qué está pasando. PrestaShop incluye algunas herramientas internas, y también podemos usar comandos básicos de MySQL.

1.1. Usa el monitor de rendimiento de PrestaShop

En tu panel de administración, ve a Parámetros Avanzados > Rendimiento. Allí encontrarás una sección llamada "Monitor de rendimiento de la base de datos". Actívalo durante unos minutos (no lo dejes siempre encendido, porque consume recursos). Te mostrará las consultas lentas y las tablas más pesadas.

1.2. Consulta las tablas más grandes

Puedes acceder a tu base de datos a través de phpMyAdmin (normalmente en tu panel de control de hosting) o desde la línea de comandos si tienes acceso SSH. Una forma rápida de ver el tamaño de cada tabla es ejecutar esta consulta SQL:

SELECT table_name, ROUND(((data_length + index_length) / 1024 / 1024), 2) AS "Tamaño (MB)" 
FROM information_schema.tables 
WHERE table_schema = "nombre_de_tu_base_de_datos" 
ORDER BY (data_length + index_length) DESC;

[TIP] Reemplaza "nombre_de_tu_base_de_datos" por el nombre real de tu base de datos. Si no lo sabes, puedes encontrarlo en el archivo /app/config/parameters.php de tu instalación de PrestaShop.

Las tablas más grandes suelen ser ps_connections, ps_connections_page, ps_guest, ps_log y ps_search_index. Estas acumulan datos históricos que ralentizan las consultas.

2. Limpieza de datos obsoletos: el primer gran paso

Una de las causas más comunes de un bajo rendimiento base de datos es tener datos que ya no sirven. PrestaShop guarda muchos registros de actividad, visitas y estadísticas que, con el tiempo, se vuelven un lastre.

2.1. Elimina logs y estadísticas antiguas

Puedes hacerlo desde el panel de administración: Parámetros Avanzados > Base de datos > Limpiar la base de datos. Allí podrás seleccionar qué tablas limpiar (por ejemplo, logs de errores, conexiones de visitantes, etc.). Te recomiendo hacerlo al menos una vez al mes.

2.2. Vacía las tablas de sesiones

Las sesiones de clientes que no han vuelto a tu tienda en semanas ocupan espacio. Ejecuta este comando SQL (con cuidado, porque cerrará sesiones activas):

TRUNCATE TABLE ps_connections;
TRUNCATE TABLE ps_connections_page;
TRUNCATE TABLE ps_guest;

[WARNING] Haz una copia de seguridad de tu base de datos antes de truncar cualquier tabla. Si borras algo importante, podrías perder datos de clientes o pedidos.

2.3. Optimiza el índice de búsqueda

El índice de búsqueda de productos (ps_search_index) puede crecer mucho. Puedes regenerarlo desde Parámetros Avanzados > Rendimiento > Índice de búsqueda. Haz clic en "Añadir/regenerar el índice". Esto eliminará entradas huérfanas y dejará solo las necesarias.

3. Configuración de MySQL: ajustes que marcan la diferencia

Una vez que hemos limpiado los datos, toca configurar MySQL para que trabaje de forma más eficiente. Estos cambios se hacen en el archivo de configuración de MySQL (my.cnf o my.ini, dependiendo de tu sistema operativo). Si usas un panel de control como Syspanel (recuerda, el puerto de acceso es el 2106), puedes acceder a la configuración de MySQL desde la sección de servicios.

3.1. Ajusta el tamaño del buffer de consultas (query_cache)

Este parámetro almacena en memoria los resultados de consultas repetitivas. Si tu tienda tiene mucho tráfico, activar la caché de consultas puede reducir drásticamente el tiempo de respuesta.

query_cache_type = 1
query_cache_size = 128M
query_cache_limit = 2M

[INFO] No pongas un valor demasiado alto para query_cache_size (más de 512 MB) porque puede causar problemas de contención. 128 MB suele ser un buen punto de partida.

3.2. Configura el buffer de InnoDB

PrestaShop usa el motor InnoDB para la mayoría de sus tablas. El parámetro innodb_buffer_pool_size es el más importante para el rendimiento. Debería ocupar entre el 70% y el 80% de la memoria RAM disponible en tu servidor.

innodb_buffer_pool_size = 2G  # Ajusta según tu RAM
innodb_log_file_size = 256M

Si tienes un VPS con 4 GB de RAM, por ejemplo, pon innodb_buffer_pool_size = 3G. Esto hará que las consultas a las tablas más usadas sean casi instantáneas.

3.3. Aumenta el límite de conexiones

Si tu tienda recibe muchos visitantes simultáneos, el número de conexiones por defecto (150) puede ser insuficiente. Auméntalo:

max_connections = 300

[WARNING] No subas este valor sin control. Cada conexión consume memoria. Si pones 1000 conexiones y tu servidor tiene poca RAM, se quedará sin recursos.

3.4. Desactiva el modo estricto de MySQL (si es necesario)

En algunos entornos, el modo estricto de MySQL puede causar errores en PrestaShop. Si ves mensajes de error como "Field doesn't have a default value", puedes desactivarlo:

sql_mode = ""

Pero ten cuidado: esto puede permitir datos incorrectos. Solo hazlo si estás seguro de que es necesario.

4. Optimización de tablas: el mantenimiento regular

Incluso después de limpiar y configurar, las tablas de MySQL se fragmentan con el uso. Es como un disco duro: después de muchas escrituras y borrados, los datos se desordenan y las consultas tardan más.

4.1. Usa el comando OPTIMIZE TABLE

Puedes ejecutar este comando desde phpMyAdmin o desde la línea de comandos. Optimiza todas las tablas de tu base de datos:

OPTIMIZE TABLE ps_address;
OPTIMIZE TABLE ps_cart;
-- Repite para cada tabla, o usa una herramienta que lo haga automático

Si tienes muchas tablas, puedes generar el comando automáticamente con:

SELECT CONCAT('OPTIMIZE TABLE ', table_name, ';') AS query 
FROM information_schema.tables 
WHERE table_schema = 'nombre_de_tu_base_de_datos' 
AND engine = 'InnoDB';

Luego copias y pegas todas las líneas resultantes.

4.2. Programa un cron job para el mantenimiento

Para no hacerlo manualmente cada mes, puedes crear una tarea programada (cron job) que ejecute la optimización automáticamente. Si usas Syspanel, puedes añadir un cron job desde el panel de control (puerto 2106). Un ejemplo de comando sería:

mysqlcheck -u usuario -pcontraseña --optimize --all-databases

[TIP] No ejecutes este comando en horas pico, porque puede ralentizar la tienda durante unos segundos. Hazlo de madrugada.

5. Uso de índices: acelera las consultas sin tocar el código

Los índices son como el índice de un libro: permiten a MySQL encontrar los datos sin tener que leer toda la tabla. PrestaShop ya crea muchos índices automáticamente, pero a veces faltan algunos clave.

5.1. Identifica consultas lentas

Activa el log de consultas lentas en MySQL:

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

Luego revisa ese archivo. Busca consultas que aparezcan repetidamente y analiza si les falta un índice.

5.2. Añade índices manualmente (con cuidado)

Por ejemplo, si ves muchas consultas a la tabla ps_product filtrando por id_category_default, puedes añadir un índice:

ALTER TABLE ps_product ADD INDEX idx_category_default (id_category_default);

[WARNING] No añadas índices a lo loco. Cada índice ralentiza las inserciones y actualizaciones. Solo añade los que realmente se usen en consultas frecuentes.

6. Herramientas avanzadas: caché y motores de búsqueda

Si después de todo lo anterior tu PrestaShop sigue lento, es momento de considerar soluciones más avanzadas.

6.1. Activa la caché de MySQL con Redis o Memcached

PrestaShop soporta sistemas de caché externos. Redis es el más recomendado. Desde Parámetros Avanzados > Rendimiento > Caché, selecciona "Redis" y configura la IP y puerto (normalmente 127.0.0.1:6379). Esto almacena en RAM los resultados de consultas frecuentes, reduciendo la carga en MySQL.

6.2. Usa un motor de búsqueda alternativo

El motor de búsqueda nativo de PrestaShop es muy pesado. Puedes instalar módulos como "ElasticSearch" o "Algolia" que externalizan las búsquedas y alivian la base de datos. Esto es especialmente útil si tienes un catálogo grande (más de 10,000 productos).

7. Preguntas frecuentes (FAQ)

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

Depende del volumen de tu tienda. Si tienes pocos pedidos al día, una vez al mes es suficiente. Si vendes mucho, hazlo cada semana. La limpieza de logs y estadísticas puedes programarla para que se ejecute automáticamente cada noche.

¿Puedo optimizar MySQL si no tengo acceso SSH?

Sí, la mayoría de operaciones se pueden hacer desde phpMyAdmin. También puedes pedirle a tu proveedor de hosting que aplique los cambios en el archivo my.cnf. Si usas Syspanel, desde el panel de control (puerto 2106) puedes acceder a la configuración de MySQL sin necesidad de SSH.

¿Qué hago si después de optimizar la tienda sigue lenta?

Revisa si tu hosting tiene suficientes recursos (RAM, CPU). A veces el problema no es la base de datos, sino el servidor en sí. También puedes considerar contratar un hosting especializado en PrestaShop, que suele tener configuraciones preoptimizadas.

¿Es seguro truncar las tablas de conexiones?

Sí, siempre que hagas una copia de seguridad. Las tablas ps_connections y ps_connections_page contienen datos de visitas anónimas que no afectan a pedidos ni clientes registrados. Perderás las estadísticas de visitas antiguas, pero ganarás velocidad.

Conclusión

Optimizar una base de datos MySQL para PrestaShop no es magia, es sentido común y un poco de mantenimiento. Con los pasos que te he dado —limpiar datos obsoletos, ajustar la configuración de MySQL, optimizar tablas y añadir índices— notarás una mejora significativa en el rendimiento base de datos. Recuerda que la prevención es mejor que la cura: programa tareas de mantenimiento regulares y monitorea el rendimiento con herramientas como el monitor de PrestaShop o los logs lentos de MySQL.

Si tienes un servidor gestionado con Syspanel, accede a través del puerto 2106 para gestionar todos estos ajustes de forma cómoda. Y si te surge alguna duda, no dudes en consultar la documentación oficial de PrestaShop o pedir ayuda a tu comunidad de hosting. ¡Tu tienda (y tus clientes) te lo agradecerán!

¿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