Ecommerce

Cómo limpiar 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».

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 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

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.

Refescar datos de 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.

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.

Alberto Bravo

Hola, soy Alberto Bravo, licenciado en BB.AA. en la Universidad del País Vasco. Me especialicé en diseño gráfico e ilustración. Tras varios años trabajando de ello (etapa de autónomo incluida), decidí digitalizarme y pasar al diseño web. Allí descubrí el SEO y la programación. Actualmente, soy el responsable del departamento SEO de Caronte Studio y ya no tengo tiempo para ilustrar. En mis artículos te hablaré, principalmente, de SEO y tiendas online, pero seguro que también podrás encontrar algún que otro artículo sobre diseño gráfico. WEB | LINKEDIN | ARTSTATION

Ver comentarios

  • 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.

Entradas recientes

Cómo implementar Lazy Loading para imágenes y mejorar tu SEO

En este artículo, aprenderás qué es el Lazy Loading y cómo implementarlo fácilmente en tu… Leer más

4 horas hace

Presupuesto de rastreo o Crawl Budget: ¿Qué es y cómo mejorarlo?

En esta guía práctica, te explicamos qué es el presupuesto de rastreo, por qué es… Leer más

3 días hace

Qué es el call to action (CTA) y cómo hacer uno efectivo

¿Alguna vez te has encontrado con un mensaje que te invita a actuar, ya sea… Leer más

1 semana hace

¿Qué es una promesa en JavaScript? Todo lo que necesitas saber

Una de las preguntas más comunes entre los desarrolladores web que comienzan a usar JavaScript… Leer más

2 semanas hace

Preimpresión digital ¿Por qué es tan importante?

Descubre qué es y para qué sirve la preimpresión digital para conseguir una buena impresión… Leer más

2 semanas hace

Tipos de consentimientos para YouTube, Twitter, LinkedIn y TikTok

Ampliamos información para las redes sociales. Descubre cómo gestionar correctamente los consentimientos necesarios en las… Leer más

3 semanas hace