Prestashop y la limpieza de la base de datos

Somos Roberto y Francisco, un pequeño equipo dedicado al desarrollo web especializado en las cuestiones técnicas de las plataformas WordPress y WooCommerce. Realizamos consultoría y formación, desarrollamos plugins y temas, optimizamos, securizamos, respondemos a incidentes de seguridad y mantenemos sitios. Fundada en 2012, somos el apoyo técnico de más de un centenar de proyectos web en España y Alemania, además formamos parte activa de la comunidad WordPress.

Si tienes un sitio web en Prestashop, lleva un tiempo activo y has tenido muchas visitas, puede que hayas tenido un problema con el tamaño de la base de datos. O si el sitio está mantenido, puede que más de una vez te hayan dicho que van a hacer «limpieza» en la Base de Datos ¿Por qué ocurre esto?

Tractor colocando basura en un vertedero

Prestashop es software, un framework especializado para la construcción de sitios web para tiendas online con posibilidad de modularizar funcionalidades. Su funcionamiento interno tiene una gran granularidad, de hecho llama la atención el uso de más de 200 tablas en la base de datos frente a otros frameworks como WordPress que solo usan 11.

Lo que ocurre principalmente es que, dentro de su funcionamiento predeterminado, está el de recoger muchas estadísticas sobre muchos sucesos, algo que a la larga se hace inmanejable en la mayoría de los alojamientos. Mientras que una base de datos de un sitio normal no suele superar los 100Mb, hemos encontrado casos de bases de datos de Prestashop que acumulaban más 3Gb de datos.

La solución es eliminar parte de estas estadísticas, y concretamente unas partes bastante superfluas y con información que ya nos dan herramientas especializadas más avanzadas como Piwik o Google Analytics, dejaríamos sin contenido las siguientes tablas:

  • ps_page_viewed
  • ps_connections_page
  • ps_connections_source
  • ps_connections
  • ps_guest
  • ps_pagenotfound

Que simplemente dan información estadística sobre páginas vistas, registros de conexiones a nuestra web, y un registro de páginas no encontradas.

La última limpieza de este tipo que hicimos desde GIGA4 dejó una base de datos de 1.1Gb en 32Mb. Con esta optimización conseguimos que: la web funcione un poco más rápida, consuma menos recursos al hacer algunas operaciones, mantenemos «engrasada» la base de datos y evitamos problemas que podrían hacer fallar el servidor, evitando así que en el futuro la web pueda quedar offline.

6 comentarios en “Prestashop y la limpieza de la base de datos

  1. Estuve buscando que solucionar el problema de lentitud de mi Back Office y aumentar la velocidad de front ofice y ha sido difícil encontrar información completa.
    Es este Post me dieron la solución en una forma practica.
    Muchas Gracias por compartir conocimiento util

  2. Hola, he visto el artículo de la limpieza de la base de datos, el cual me parece muy interesante, la cosa es que lo encontré cuando buscaba una solución para borrar el h2 de la descripción corta de los productos en prestashop 1.7, solo quiero borrar todos los h2 t dejar el texto que tienen, me podrías ayudar en como sería la sentencia apropiada para tal efecto?.
    Muchas gracias, un saludo

    1. Buenas Jose Antonio. Ese H2 seguramente forme parte de la plantilla (theme) que estás usando en PrestaShop, por tanto habría que editar el código de esa plantilla para hacer un cambio de esas características. Cada plantilla es distinta así que dónde está y cómo se edita depende de cada caso particular.

  3. Hola, ante todo, gracias por contestar, este h2 no lo crea la plantilla, está en el cuadro de diálogo de la definición corta, he puesto una solución provisional que ha sido ocultarlo con css, la cual funciona, pero yo las quería eliminar todas de golpe con una consulta desde la base de datos, el problema es que se que se puede hacer pero no se como, sería algo así como una sentencia DELETE y con un condicional WHERE, que contendría el eliminar el h2 o cambiarlo por 0 o algo así para que los elimine, no se si me explico bien.
    Gracias

    1. Hola Jose Antonio, en cualquier caso ese cambio tendría hacerse con una expresión regular y fuera de la base de datos mediante otro lenguaje de programación, tu interés es admirable, pero te recomendamos no tocar la base de datos con esta sentencia ¯\_(ツ)_/¯

Deja una respuesta

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