Limpieza y optimización de tablas PrestaShop

Si gestionas una tienda PrestaShop, es probable que uno de tus principales objetivos sea mantenerla rápida y eficiente. Sin embargo, con el tiempo, es habitual notar que el panel de administración (back office) se vuelve lento y que el tamaño de la base de datos crece de forma descontrolada.

¿El culpable más frecuente? La acumulación de datos estadísticos y registros de visitantes que, en la mayoría de los casos, no son críticos para el día a día de la tienda.

Hoy vamos a ver cómo identificar y limpiar las tablas que más se llenan en PrestaShop y cómo prevenir que vuelva a pasar.

El objetivo: Más velocidad y menos espacio

La optimización de la base de datos persigue dos objetivos claros:

  1. Evitar que la base de datos se llene: Muchos hostings tienen límites de tamaño para las bases de datos. Llenarla puede suponer desde advertencias a la suspensión del servicio.
  2. Mejorar el rendimiento: Una tabla con millones de filas es lenta de consultar. Al reducir el número de registros, se realizan menos consultas y las que se hacen son mucho más rápidas, aliviando la carga del servidor y mejorando la velocidad general de la web.

Las tablas que más crecen

Por defecto, PrestaShop tiene un sistema de estadísticas interno que registra cada visita, cada página vista, cada búsqueda y cada visitante (sea cliente o invitado). Esto genera un volumen de datos ingente en tablas específicas:

  • ps_guest
  • ps_connections
  • ps_connections_source
  • ps_connections_page
  • ps_pagenotfound

Si entras en tu gestor de bases de datos (como phpMyAdmin) y ordenas las tablas por tamaño, es muy probable que encuentres estas en las primeras posiciones, ocupando cientos de megabytes o incluso gigabytes.


Paso 1: Desactivar la fuente del problema (Módulos)

Antes de limpiar, debemos «cerrar el grifo». Si borramos los datos pero los módulos que los generan siguen activos, en pocos días estaremos igual.

La mayoría de estos datos son generados por módulos de estadísticas nativos. Te recomendamos desactivar (o directamente desinstalar) los siguientes módulos, especialmente si ya usas herramientas externas como Google Analytics:

  • [ ] Data mining for statistics / Explotación de datos para las estadísticas (Módulo: statsdata)
  • [ ] Pages not found / Páginas no encontradas (Módulo: pagesnotfound)
  • [ ] Shop search / Búsquedas en la tienda (Módulo: statssearch)
  • [ ] Registered customer information / Información de clientes registrados (Módulo: statspersonalinfos)
  • [ ] statsorigin / Procedencia de los visitantes (Módulo: statsorigin)
  • [ ] statsonline / Visitantes en línea (Módulo: statsonline)

Desactivarlos no solo frenará el crecimiento de la base de datos, sino que también reducirá la carga en el servidor en cada visita, ya que PrestaShop dejará de insertar filas en estas tablas con cada clic.


Paso 2: Limpieza de la Base de Datos

Una vez desactivados los módulos, podemos proceder a la limpieza.

¡ADVERTENCIA! Antes de ejecutar cualquier consulta de borrado, es imprescindible que realices una copia de seguridad completa de tu base de datos. Un error aquí puede ser irreversible.

Limpieza Rápida: TRUNCATE

Para las tablas que solo almacenan registros de estadísticas que ya no necesitamos (porque hemos desactivado los módulos), la forma más rápida y eficiente de vaciarlas es con el comando TRUNCATE. Este comando resetea la tabla y sus contadores, siendo mucho más rápido que un DELETE.

Puedes ejecutar estas consultas desde tu gestor de base de datos (reemplaza ps_ por tu prefijo si es diferente):

SQL

TRUNCATE TABLE ps_connections;
TRUNCATE TABLE ps_connections_source;
TRUNCATE TABLE ps_connections_page;
TRUNCATE TABLE ps_pagenotfound;

Limpieza Segura: ps_guest

La tabla ps_guest es un poco más delicada. No podemos simplemente vaciarla (TRUNCATE), ya que esta tabla vincula a los visitantes (invitados) con sus carritos. Si la vaciamos, podríamos desvincular carritos activos de clientes que están en proceso de compra.

Sin embargo, esta tabla también almacena millones de registros de invitados antiguos que nunca se convirtieron en clientes y que ya no tienen carritos.

Podemos utilizar una consulta de borrado segura que solo elimine a los invitados que no estén registrados como clientes (id_customer = 0) Y que no tengan ningún carrito asociado actualmente.

Esta es la consulta segura:

SQL

DELETE FROM ps_guest
WHERE id_customer = 0
  AND id_guest NOT IN (SELECT DISTINCT id_guest FROM ps_cart);

Conclusión

Mantener una base de datos limpia es fundamental para el rendimiento de un PrestaShop. Al desactivar los módulos de estadísticas nativos (que raramente se usan si se tiene Analytics) y ejecutar una limpieza controlada de las tablas de registro, no solo liberarás una enorme cantidad de espacio, sino que notarás una mejora significativa en la velocidad de tu tienda y del panel de administración.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Kebes
Scroll al inicio