Nettoyer la base de données PrestaShop : gardez votre boutique rapide
Votre base de données PrestaShop grossit chaque jour, même quand vous ne vendez rien. Découvrez quelles tables grossissent le plus, ce que vous pouvez supprimer sans danger et comment le faire sans risque.
Une boutique PrestaShop collecte discrètement beaucoup de données. Chaque visite, chaque recherche et chaque page introuvable est enregistrée quelque part. Au bout de quelques années, la base de données peut peser plusieurs gigaoctets, alors que vos produits et commandes n'en représentent qu'une petite partie.
Ce n'est pas seulement de l'espace perdu. Les grosses tables ralentissent les sauvegardes, rendent les mises à jour plus délicates et certaines pages du back-office nettement plus lentes.
Quelles tables grossissent le plus vite ?
Dans la plupart des boutiques, les principaux coupables se trouvent au même endroit :
- ps_connections, avec ps_connections_page et ps_connections_source : une ligne par visite, robots compris.
- ps_guest : les visiteurs anonymes qui n'ont jamais créé de compte.
- ps_statssearch : tous les termes de recherche saisis par vos visiteurs.
- ps_pagenotfound : un journal de chaque page 404.
- ps_mail : la liste de tous les e-mails envoyés par votre boutique.
Au bout de quelques mois, vous n'avez plus besoin de ces données pour faire tourner votre boutique. Vos commandes, clients et produits se trouvent dans des tables totalement différentes.
Que pouvez-vous supprimer sans danger ?
Une bonne règle : conservez les statistiques et les journaux aussi longtemps que vous les utilisez vraiment, par exemple 90 jours, et supprimez le reste. Faites attention à deux points :
- Supprimez uniquement les invités anonymes, jamais ceux liés à un compte client.
- Conservez les invités ayant un panier récent, sinon un visiteur qui vient d'ajouter un article à son panier le perdra.
Les règles de prix expirées et le cache de la recherche à facettes peuvent aussi être supprimés. PrestaShop reconstruit ce cache automatiquement.
Comment procéder en toute sécurité
1. Faites d'abord une sauvegarde
Ne nettoyez jamais sans sauvegarde. En cas de problème, il suffit de restaurer les tables.
2. Vérifiez ce qui sera supprimé
Contrôlez combien de lignes seront supprimées par table. Si vous voyez soudain un chiffre anormalement élevé, vérifiez d'abord vos réglages.
3. Supprimez par petits lots
Un seul DELETE sur des millions de lignes peut bloquer votre boutique pendant plusieurs minutes. Supprimez plutôt par lots de quelques milliers de lignes.
4. Reconstruisez l'index de recherche
Un index de recherche à jour garantit que la recherche de votre boutique correspond de nouveau à votre catalogue actuel.
5. Rendez l'espace au disque
MySQL et MariaDB ne rendent pas d'eux-mêmes l'espace des lignes supprimées. Si vous voulez que les fichiers de la base diminuent vraiment, lancez ensuite OPTIMIZE TABLE sur les plus grosses tables, par exemple dans phpMyAdmin.
À la main ou avec un module ?
Tout cela est possible avec des requêtes SQL dans phpMyAdmin, mais une seule clause WHERE erronée et vos données disparaissent. Et il faut recommencer tous les quelques mois.
C'est pourquoi nous avons créé Cloverfield Database Clean-up. Le module crée une sauvegarde en un clic, affiche à l'avance combien de lignes chaque table va perdre, nettoie par lots de 2000 lignes et reconstruit l'index de recherche. Vous restaurez les sauvegardes depuis le même module, et le multiboutique est également pris en charge.
En résumé
- Les journaux et statistiques font grossir votre base sans que vous le remarquiez.
- Ne gardez que ce que vous utilisez vraiment, par exemple les 90 derniers jours.
- Toujours une sauvegarde d'abord, puis un nettoyage par petits lots.
- Répétez l'opération quelques fois par an et votre boutique restera rapide.