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.
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».
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
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.
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.
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.
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.
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.
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:
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.
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.
En este artículo, aprenderás qué es el Lazy Loading y cómo implementarlo fácilmente en tu… Leer más
En esta guía práctica, te explicamos qué es el presupuesto de rastreo, por qué es… Leer más
¿Alguna vez te has encontrado con un mensaje que te invita a actuar, ya sea… Leer más
Una de las preguntas más comunes entre los desarrolladores web que comienzan a usar JavaScript… Leer más
Descubre qué es y para qué sirve la preimpresión digital para conseguir una buena impresión… Leer más
Ampliamos información para las redes sociales. Descubre cómo gestionar correctamente los consentimientos necesarios en las… Leer más
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.
Excelente aporte este post. Súper ordenado y bien explicado.
Felicidades!
Gracias, Joel
:)