Optimiser la base de données PrestaShop pour améliorer les performances

Quand une boutique PrestaShop devient lente, le problème ne vient pas toujours du thème ou de l’hébergement. Dans beaucoup de cas, la base de données est en cause. On le voit souvent sur des sites en production depuis plusieurs années : tables surchargées, index absents, logs jamais nettoyés… Résultat, chaque page met plus de temps à s’afficher, même avec un bon serveur.

Optimiser la base de données ne demande pas forcément des compétences avancées, mais ça nécessite de savoir où regarder et quoi toucher. Voici les actions concrètes qui font vraiment la différence sur le terrain.

Identifier les tables qui ralentissent votre PrestaShop

Avant de nettoyer à l’aveugle, il faut comprendre ce qui prend de la place et ce qui est sollicité.

Dans phpMyAdmin ou via un outil comme Adminer, regardez :

– les tables les plus volumineuses

– celles qui contiennent beaucoup de lignes

– les tables liées aux logs et statistiques

Sur PrestaShop, certaines tables grossissent très vite :

– ps_connections et ps_connections_page

– ps_guest

– ps_log

– ps_search_index

– ps_cart

Sur un site e-commerce actif, ces tables peuvent contenir des centaines de milliers de lignes inutiles.

Nettoyer les données inutiles sans casser la boutique

C’est souvent là que les gains sont les plus rapides.

Quelques actions concrètes :

Supprimer les anciennes connexions

Les tables de tracking (ps_connections, ps_guest) ne sont pas indispensables à long terme.

Vous pouvez supprimer les entrées anciennes :

DELETE FROM ps_connections WHERE date_add < NOW() - INTERVAL 3 MONTH;

Même logique pour ps_guest.

Vider les logs

La table ps_log peut devenir énorme sans apporter de valeur après quelques semaines.

Un simple :

TRUNCATE TABLE ps_log;

permet de repartir proprement.

Nettoyer les paniers abandonnés

Les paniers non convertis restent stockés :

DELETE FROM ps_cart WHERE date_add < NOW() - INTERVAL 3 MONTH;

Sur certaines boutiques, ça libère plusieurs dizaines de Mo.

Important : toujours faire une sauvegarde avant.

Optimiser les tables MySQL (souvent oublié)

Supprimer des données ne suffit pas. MySQL ne récupère pas automatiquement l’espace disque.

Après nettoyage, lancez :

OPTIMIZE TABLE ps_nomdelatable;

Ou directement depuis phpMyAdmin en sélectionnant plusieurs tables.

Ce processus :

– réorganise les données

– réduit la fragmentation

– améliore la vitesse de lecture

Sur des bases volumineuses, le gain est immédiat.

Vérifier et améliorer les index

Une base de données sans index adaptés devient vite un goulet d’étranglement.

PrestaShop gère déjà des index, mais certains modules ou personnalisations peuvent poser problème.

Concrètement :

– identifiez les requêtes lentes (slow query log)

– regardez si les colonnes filtrées sont indexées

Exemple classique : recherche sur une colonne non indexée dans une table volumineuse.

Ajouter un index :

ALTER TABLE ps_nomdelatable ADD INDEX (nom_colonne);

Attention à ne pas surcharger en index inutiles, ça ralentit les écritures.

Surveiller les requêtes lentes

Activer le slow query log sur le serveur MySQL permet de voir exactement ce qui ralentit.

Ce fichier liste :

– les requêtes trop longues

– les tables mal optimisées

Dans la pratique, on repère souvent :

– des modules qui font des requêtes mal construites

– des jointures sur des tables énormes sans index

C’est un point rarement abordé dans les guides, mais extrêmement utile en production.

Automatiser le nettoyage avec des tâches planifiées

Nettoyer une fois, c’est bien. Automatiser, c’est mieux.

Deux options :

Via un module PrestaShop

Certains modules comme DB Optimizer permettent de :

– planifier le nettoyage

– supprimer automatiquement les données obsolètes

– optimiser les tables régulièrement

Pratique pour éviter que le problème revienne.

Via une tâche cron

Plus propre techniquement :

– script SQL exécuté automatiquement

– fréquence hebdomadaire ou mensuelle

Sur des boutiques à fort trafic, c’est indispensable.

Adapter le moteur de stockage (InnoDB recommandé)

Encore aujourd’hui, certaines bases PrestaShop utilisent MyISAM.

Passer en InnoDB apporte :

– meilleure gestion des transactions

– moins de corruption

– meilleures performances globales

Conversion :

ALTER TABLE ps_nomdelatable ENGINE=InnoDB;

À faire table par table si nécessaire.

Limiter l’impact des modules sur la base

Ce point est souvent sous-estimé.

Certains modules :

– ajoutent leurs propres tables

– stockent énormément de données

– exécutent des requêtes lourdes

En maintenance, on voit régulièrement des bases alourdies par :

– modules de stats

– modules marketing

– modules mal codés

Concrètement :

– désinstallez les modules inutilisés (pas juste désactivés)

– supprimez leurs tables si elles ne servent plus

Un module supprimé mais dont les tables restent peut continuer à impacter les performances.

Surveiller la taille globale et anticiper

Une base qui grossit sans contrôle finit toujours par ralentir.

Quelques bonnes pratiques simples :

– vérifier la taille mensuellement

– surveiller les tables qui explosent

– adapter le nettoyage selon l’activité

Sur une boutique active, un nettoyage trimestriel est souvent le minimum.

Ne pas négliger la configuration serveur

Optimiser la base ne sert à rien si MySQL est mal configuré.

Quelques paramètres clés :

– innodb_buffer_pool_size (doit être adapté à la RAM)

– query_cache (souvent désactivé sur versions récentes)

– max_connections

Sur un hébergement mutualisé, vous êtes limité. Sur un VPS ou serveur dédié, ces réglages font une vraie différence.

En pratique, on combine toujours optimisation base + configuration serveur + cache PrestaShop pour obtenir un résultat solide.

À quelle fréquence faut-il nettoyer la base de données PrestaShop ?

Un nettoyage mensuel est généralement suffisant pour une boutique active, mais les sites avec un fort trafic ou beaucoup de commandes peuvent nécessiter un entretien hebdomadaire. L’idéal est d’automatiser ces tâches (suppression des logs, connexions expirées, paniers abandonnés) afin d’éviter l’accumulation de données inutiles qui ralentissent les requêtes.

Quels types de données inutiles peut-on supprimer sans risque ?

Vous pouvez supprimer sans impact les logs anciens, les statistiques obsolètes, les connexions visiteurs expirées, les paniers abandonnés anciens ou encore les tables temporaires générées par certains modules. Il faut toutefois éviter de toucher aux commandes, clients ou produits sans sauvegarde préalable.

Comment savoir si ma base de données est devenue trop lourde ?

Des temps de chargement en hausse, des pages d’administration lentes ou des requêtes SQL qui prennent plusieurs secondes sont des signes révélateurs. Vous pouvez aussi vérifier la taille globale de la base et identifier les tables les plus volumineuses via phpMyAdmin ou un outil de monitoring.

L’optimisation des index MySQL améliore-t-elle vraiment les performances ?

Oui, des index bien configurés accélèrent fortement les requêtes fréquentes, notamment sur les tables produits, commandes et clients. Si certaines requêtes sont lentes, analyser et ajuster les index peut réduire considérablement le temps de réponse sans modifier le contenu du site.

Faut-il utiliser un module pour optimiser la base de données PrestaShop ?

Un module peut simplifier la gestion en automatisant les nettoyages et en évitant les erreurs manuelles. Cependant, pour un contrôle plus fin, il peut être préférable de combiner module et interventions directes via SQL ou phpMyAdmin, surtout sur des boutiques complexes.

Besoin d’aide avec votre site ?

Que ce soit un bug, une refonte, une récupération de données ou de la maintenance, dites-nous ce qui vous bloque : nous revenons rapidement vers vous avec une solution.

Les détails techniques ou sensibles vous seront demandés uniquement après notre premier échange.

Vous êtes déjà client ?

Contact urgent