Reducir el tamaño de la base de datos de PrestaShop

Si tienes una tienda de PrestaShop es posible que te hayas encontrado con que sus bases de datos crecen de manera desproporcionada, llegando a bloquear todo el sitio web. Para evitar esto veremos cómo limpiar una base de datos de PrestaShop, bien eliminando datos innecesarios o bien refrescando las tablas que contienen datos anticuados.

Diferentes formas de ver que nuestra base de datos se dispara

Número de entradas

Si estamos navegando por nuestra base de datos ya nos tiene que dar qué sospechar si el número de entradas es desmesurado. Para verlo podemos ordenar las tablas según sus entradas haciendo clic en «Filas».

Base de datos de tamaño excesivo
Limpiar la base de datos de PrestaShop 1.7

Pero ¿cuál es el tamaño de la base de datos?

Si realizamos la siguiente consulta en el panel de MySql, podremos obtener el tamaño de la base de datos. En este caso le indicamos que los datos de salida nos los de en MB.

SELECT table_schema,
     sum( data_length + index_length ) / 1024 / 1024 "MB"
 FROM information_schema.TABLES
 GROUP BY table_schema

Esto nos dará el tamaño total de la base de datos. Pero también podemos obtener los tamaños desglosados, tabla a tabla, con la siguiente consulta:

SELECT 
      table_schema, 
      table_name, 
      round(((data_length + index_length) / 1024 / 1024), 2) 'Tamaño (MB)' 
 FROM information_schema.TABLES 
 ORDER BY (data_length + index_length) DESC
Estructura de tablas de PrestaShop

Estructura de la base de datos

Bien, hay algunas tablas de muchos megas y otras de unos pocos KB. Pero ¿cómo sabemos si realmente son grandes? Algunas tablas tendrán un tamaño considerable debido a su función. Por eso vamos a listar algunas de las tablas más pesadas de la base de datos de Prestashop.

  • ps_layered_price_index: Índice de precios para la búsqueda por facetas.
  • ps_layered_filter_block: Tabla del módulo de búsqueda por facetas.
  • ps_search_index: Índice de búsqueda para el módulo ps_search.
  • ps_search_word: Palabras de búsqueda del módulo ps_search.
  • ps_log: Registro de errores.
  • ps_product_lang: Nombres y descripciones de los productos.
;

Limpiar la base de datos de Prestashop

Tienda en mantenimiento

Poner PrestaShop en modo mantenimiento

Lo primero de todo es poner en mantenimiento tu tienda PrestaShop. Si tienes un problema con tu base de datos es que ya llevas un tiempo online, y no querrás que se pierda el pedido de ningún cliente.

Para ello entraremos en el menú del backoffice, en Configurar / Parámetros de la tienda / Configuración. Si pinchamos en la pestaña Mantenimiento encontraremos la opción Activar la tienda. La colocamos en «No» y listo, la tienda no será accesible a los usuarios. En su lugar PrestaShop les ofrecerá el mensaje que podemos configurar en esa misma pestaña.

Copia de seguridad

No tiene que hacer falta decirlo, pero es fundamental hacer una copia de seguridad. Exporta tu base de datos y guárdala en lugar seguro, por si algo saliera mal. Yo te recomiendo que tengas un histórico con las fechas indicadas, porque, a veces, los errores no son evidentes a la primera.

Ten en cuenta, también, que al tratarse de un comercio electrónico todas las operaciones con la base de datos son muy delicadas, ya que ahí se almacenan todos los datos de los pedidos y clientes. Recuperar una base de datos antigua puede suponer, si no se hace correctamente, la pérdida de los pedidos realizados en el periodo de tiempo intermedio. Por eso te recomendamos que, si tu problema es grave, lo pongas en manos de un técnico de sercicios web.

Refrescar datos de búsqueda

En la opción de Parámetros de la tienda escoge Buscar. Te llevará a la configuración de las búsquedas, donde podrás ver un apartado de indexación. Pues bien, aquí configuramos el índice que crea PrestaShop para tener listados los productos cuando alguien usa el buscador de nuestro sitio. Si observamos que no están indexados todos los productos (En el caso de la imagen de la derecha faltarían por incluir 37, ya que indica: Productos indexados 104/141), tenemos un enlace para «Añadir los productos que faltan al índice».

A continuación encontramos otro enlace, que reconstruye todo el índice completo y es el que nos interesa para añadir los productos sin indexar y eliminar los que ya no están disponibles. Haciendo clic en este enlace conseguiremos refrescar las tablas de búsqueda, optimizando su tamaño.

Es recomendable crear una tarea cron en nuestro hosting para que esta acción se realice de forma automática cada cierto tiempo.

Módulo búsquedas de PrestaShop

Refescar datos de búsqueda por facetas

PrestaShop búsqueda por facetas

De forma parecida actuaremos con otro módulo que genera unas tablas de tamaño considerable. Se trata del módulo de búsqueda por facetas. Esta vez accederemos a él desde el menú de módulos, usando su opción de configurar.

También allí encontraremos una zona dedicada a la indexación, con un botón que nos permite reconstruir todo el índice de precios y otro para reconstruir el índice de atributos y características. Haciendo clic en estos dos enlaces se refrescarán los datos de las tablas ps_layered_price_index y ps_layered_filter_block.

Limpiar la base de datos de PrestaShop: Índice y caché de búsqueda por facetas

También en este caso conviene crear una tarea cron con estas dos instrucciones para mantener actualizados los datos.

Vaciado de tablas poco importantes

Si queremos bajar aún más el tamaño de la base de datos hay ciertas tablas con información más o menos prescindible. Podemos entrar en ellas y vaciarlas. Se trata de las siguientes tablas:

  • ps_connections – Almacena datos sobre las ip de los visitantes y datos sobre las páginas que visitan
  • ps_connections_page – Datos sobre tiempos de conexiones a páginas
  • ps_connections_source – Palabras clave de las conexiones, fuente…
  • ps_cart – Carros de clientes
  • ps_cart_product – Datos sobre los productos en carros de clientes
  • ps_guest – Datos sobre conexiones sin login
  • ps_page_viewed – Páginas visualizadas

Estos son datos de analítica que, si no nos son necesarios, podemos eliminar sin que afecte negativamente al funcionamiento de PrestaShop. Muchas veces las estadísticas de PrestaShop ralentizan todo el funcionamiento del sitio. Nosotros recomendamos llevar el peso de la analítica con Google Analytics.

Para vaciar estas tablas podemos entrar en la base de datos y realizar un TRUNCATE sobre la tabla en cuestión.

Optimizar las tablas

Una vez realizado los pasos anteriores puedes ejecutar el comando OPTIMIZE TABLE en MySql, para optimizar la escritura de los datos. Ten en cuenta que lo que se hace es una copia de la tabla, volviendo a escribir la misma, por lo que tendremos que tener bastante espacio libre antes de optimizarla.

Con esto habremos conseguido limpiar la base de datos de Prestashop sin que su funcionamiento se resienta. Si todo está correcto solo faltaría eliminar el modo mantenimiento. Si no es correcto, si detectásemos algún tipo de error, siempre podríamos volver a recuperar la copia de seguridad que hicimos al principio. Si tu problema no se soluciona siempre puedes consultarnos y te ayudaremos con el mantenimiento de tu e-commerce.

Cómo configurar PrestaShop
PrestaShop borrar datos ejemplo

3 comentarios en “Cómo limpiar la base de datos de Prestashop”

  1. Alberto Bravo dice:

    Un cliente me ha preguntado si le debíamos hacer una de estas limpiezas.
    Si la base de datos funciona bien y su tamaño es grande debido al gran número de productos y datos que contiene, no aplicaremos esta solución. Estamos hablando de cosas diferentes. Lo que presentamos aquí es una solución de emergencia para vaciar tablas con datos prescindibles.

  2. Joel Campos dice:

    Excelente aporte este post. Súper ordenado y bien explicado.
    Felicidades!

Deja una respuesta

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

Índice