La base de données de PrestaShop : tables qui grossissent, index et nettoyage sans risque
Après quelques années, une boutique peut contenir des millions de lignes qui ne servent à rien. Nous vous disons lesquelles on peut nettoyer et lesquelles on ne touche pas.
La base de données de PrestaShop grossit à chaque visite, pas seulement à chaque commande. Après quelques années, on trouve souvent des tables avec des millions de lignes de statistiques que personne ne consulte et qui ralentissent les sauvegardes et certains écrans.
Les tables qui grossissent le plus
| Table | Ce qu'elle stocke | Peut-on la nettoyer ? |
|---|---|---|
connections, connections_page, connections_source | Visites pour les statistiques | Oui, l'ancien |
guest | Un enregistrement par visiteur | Avec prudence (les paniers y font référence) |
page_viewed, statssearch | Statistiques | Oui, l'ancien |
log | Journal du back-office | Oui, l'ancien |
cart, cart_product | Paniers, y compris abandonnés | Seulement les anciens paniers sans commande |
mail | Journal des e-mails envoyés | Oui |
Nettoyage sans risque
- Sauvegarde complète avant toute chose.
- Supprimez par date et par lots, pas tout d'un coup, pour ne pas bloquer la boutique :
DELETE FROM ps_connections
WHERE date_add < NOW() - INTERVAL 12 MONTH
LIMIT 50000;
- Pour les paniers, supprimez uniquement ceux qui n'ont pas de commande :
DELETE c FROM ps_cart c
LEFT JOIN ps_orders o ON o.id_cart = c.id_cart
WHERE o.id_order IS NULL
AND c.date_upd < NOW() - INTERVAL 6 MONTH;
Requêtes lentes
Activez le journal des requêtes lentes du serveur MySQL ou MariaDB (slow_query_log) pendant une journée de trafic normal. Les requêtes qui reviennent souvent proviennent généralement d'un module précis et se corrigent presque toujours avec un index.
Réglages du serveur
Si vous gérez le serveur, le paramètre le plus influent est innodb_buffer_pool_size : idéalement, assez grand pour que les tables utilisées au quotidien tiennent en mémoire. Mais sur des serveurs mutualisés ou avec peu de RAM, l'augmenter sans mesure peut laisser le système sans mémoire : ajustez-le à la taille réelle de vos données.
Moins de données, moins de problèmes
Désactivez les statistiques que vous n'utilisez pas (modules stats*) et programmez le nettoyage une fois par mois. Votre base de données, vos sauvegardes et vos migrations iront plus vite.