Nettoyer et optimiser sa base de données avec WP-CLI

Une base de données WordPress finit toujours par prendre du poids. C’est normal : les contenus évoluent, les extensions enregistrent des options, WooCommerce ajoute des commandes, les tâches planifiées s’accumulent, les transients expirent, et certains plugins laissent parfois quelques miettes derrière eux.

En 2026, optimiser une base WordPress ne consiste plus à lancer un script magique qui répare tout en un clic. La bonne méthode est plus simple et beaucoup plus fiable : sauvegarder, mesurer, identifier les tables lourdes, nettoyer ce qui doit l’être, puis optimiser seulement lorsque cela a du sens.

Le meilleur outil pour ce travail reste WP-CLI. Il permet de piloter WordPress depuis le terminal, avec des commandes propres, scriptables et adaptées aux sites modernes.

Kinsta: Premium Managed WordPress hosting

Avant toute chose : sauvegarder la base WordPress

Avant de vérifier, réparer, nettoyer ou optimiser une base de données, commencez toujours par une sauvegarde. C’est rapide, propre, et cela évite les sueurs froides.

Placez-vous à la racine de votre site WordPress :

cd /home/www/example.com/public_html

Vérifiez que WP-CLI détecte bien l’installation :

wp core is-installed

Créez ensuite un dossier pour les sauvegardes :

mkdir -p ~/backups

Exportez la base avec un nom de fichier daté :

wp db export ~/backups/wordpress-db-$(date +%Y-%m-%d-%H%M%S).sqlLangage du code : JavaScript (javascript)

Enfin, vérifiez que le fichier existe bien :

ls -lh ~/backups/wordpress-db-*.sqlLangage du code : JavaScript (javascript)

Sur un gros site, vous pouvez aussi compresser l’export :

gzip ~/backups/wordpress-db-*.sqlLangage du code : JavaScript (javascript)

La sauvegarde n’est pas une formalité. C’est votre bouton “retour arrière”. Et dans une base WordPress, ce bouton vaut de l’or.

Vérifier l’état de la base

Une fois la sauvegarde créée, commencez par vérifier l’état des tables :

wp db check

Cette commande vérifie les tables de la base à partir des identifiants présents dans wp-config.php. Si tout va bien, elle retourne une série de lignes indiquant que les tables sont correctes.

Si une table présente une erreur, vous pouvez tenter une réparation :

wp db repair

En revanche, ne lancez pas wp db repair par habitude. Sur les installations modernes, les tables WordPress utilisent normalement InnoDB. Les réparations de type REPAIR TABLE concernaient surtout les anciennes tables MyISAM. Donc, aujourd’hui, on répare lorsqu’un diagnostic indique un problème réel.

WPEngine: Premium Managed WooCommerce hosting

Identifier les tables les plus lourdes

Avant de nettoyer, il faut savoir ce qui prend de la place. WP-CLI permet d’afficher rapidement la taille des tables :

wp db size --tables --human-readable

Pour trier les tables par taille réelle directement depuis MySQL, utilisez cette requête :

wp db query "
SELECT
    table_name AS table_name,
    ROUND( ( data_length + index_length ) / 1024 / 1024, 2 ) AS size_mb
FROM information_schema.TABLES
WHERE table_schema = DATABASE()
ORDER BY size_mb DESC
LIMIT 20;
"Langage du code : PHP (php)

Cette commande affiche les vingt tables les plus lourdes. C’est souvent là que l’on trouve les vrais coupables : wp_postmeta, wp_options, wp_actionscheduler_actions, wp_actionscheduler_logs, les tables de statistiques, les logs de sécurité, ou les anciennes tables de plugins désinstallés.

À ce stade, l’objectif n’est pas encore de supprimer. L’objectif est de comprendre. Une base saine se nettoie avec un scalpel, pas avec une tronçonneuse.

Supprimer les transients expirés

Les transients permettent à WordPress et aux extensions de stocker des données temporaires. Ils servent souvent à mettre en cache des réponses d’API, des fragments de données ou des calculs coûteux.

Avec le temps, certains transients expirés peuvent rester en base, notamment dans la table wp_options. Vous pouvez les supprimer proprement avec WP-CLI :

wp transient delete --expiredLangage du code : JavaScript (javascript)

C’est la commande la plus prudente. Elle supprime seulement les transients déjà expirés.

Si vous voulez vider tous les transients, utilisez :

wp transient delete --allLangage du code : JavaScript (javascript)

Cette deuxième commande peut provoquer une petite charge temporaire, car WordPress et les extensions devront reconstruire leurs caches. Sur un site de production, commencez donc par --expired.

Kinsta: Premium Managed WordPress hosting

Nettoyer les révisions WordPress

Les révisions d’articles et de pages sont utiles. Elles permettent de revenir à une version précédente d’un contenu. Cependant, sur un site ancien, elles peuvent représenter plusieurs milliers de lignes.

Commencez par compter les révisions :

wp post list --post_type=revision --format=countLangage du code : PHP (php)

Si le nombre est raisonnable, inutile de toucher. Si la table contient des années de révisions inutiles, vous pouvez les supprimer par lots :

wp post list --post_type=revision --format=ids --posts_per_page=500 | xargs -r wp post delete --forceLangage du code : JavaScript (javascript)

Pour éviter que les révisions ne s’accumulent trop vite à l’avenir, ajoutez une limite dans wp-config.php :

define( 'WP_POST_REVISIONS', 10 );Langage du code : JavaScript (javascript)

Dix révisions par contenu suffisent largement pour la plupart des sites. Cela conserve un historique utile sans transformer la base en grenier numérique.

Nettoyer les brouillons automatiques et les contenus à la corbeille

WordPress crée aussi des brouillons automatiques. Ils sont pratiques pendant l’édition, mais ils peuvent s’accumuler sur les sites très actifs.

Pour compter les brouillons automatiques :

wp post list --post_status=auto-draft --format=countLangage du code : PHP (php)

Pour les supprimer :

wp post delete $(wp post list --post_status=auto-draft --format=ids) --forceLangage du code : JavaScript (javascript)

Sur un gros site, supprimez plutôt par lots :

wp post list --post_status=auto-draft --format=ids --posts_per_page=500 | xargs -r wp post delete --forceLangage du code : JavaScript (javascript)

Vous pouvez également vider les contenus présents dans la corbeille :

wp post list --post_status=trash --format=ids --posts_per_page=500 | xargs -r wp post delete --forceLangage du code : JavaScript (javascript)

Là encore, ne supprimez pas par réflexe. Vérifiez d’abord ce que vous avez, puis agissez.

Kinsta: Premium Managed WordPress hosting

Surveiller la table wp_options

La table wp_options mérite une attention particulière. Elle contient les réglages WordPress, les options de plugins, certains caches, les transients, et surtout les options chargées automatiquement à chaque requête.

Ces options autoloadées peuvent impacter les performances si leur volume devient trop important. Pour mesurer leur taille totale :

wp db query "
SELECT
    ROUND( SUM( LENGTH( option_value ) ) / 1024 / 1024, 2 ) AS autoload_mb
FROM wp_options
WHERE autoload IN ( 'yes', 'on', 'auto-on', 'auto' );
"Langage du code : PHP (php)

Pour afficher les plus grosses options autoloadées :

wp db query "
SELECT
    option_name,
    ROUND( LENGTH( option_value ) / 1024 / 1024, 2 ) AS size_mb,
    autoload
FROM wp_options
WHERE autoload IN ( 'yes', 'on', 'auto-on', 'auto' )
ORDER BY LENGTH( option_value ) DESC
LIMIT 20;
"Langage du code : PHP (php)

Depuis WordPress 6.6, la valeur autoload n’est plus seulement limitée aux anciens yes et no. On peut aussi rencontrer des valeurs comme on, off, auto, auto-on ou auto-off. La requête ci-dessus en tient compte.

Ne supprimez jamais une option à l’aveugle. Si une option semble énorme, identifiez d’abord l’extension qui l’a créée. Ensuite seulement, décidez si vous devez la nettoyer, la désactiver de l’autoload, ou corriger le plugin responsable.

Nettoyer les sessions WooCommerce expirées

Sur un site WooCommerce, la base grossit plus vite. C’est normal : commandes, clients, paniers, sessions, tâches planifiées, webhooks, logs, métadonnées produit… WooCommerce travaille beaucoup.

Commencez par lister les outils WooCommerce disponibles en WP-CLI :

wp wc tool list --user=1Langage du code : PHP (php)

Pour supprimer les transients expirés de WooCommerce :

wp wc tool run clear_expired_transients --user=1

Selon votre version de WooCommerce, d’autres outils peuvent être disponibles pour nettoyer les sessions clients ou régénérer certaines données. Préférez ces outils intégrés aux requêtes SQL maison. WooCommerce connaît sa propre structure de données, autant le laisser tenir le balai.

Contrôler Action Scheduler

Action Scheduler est utilisé par WooCommerce et par de nombreuses extensions pour gérer les tâches planifiées. Sur un site actif, ses tables peuvent vite devenir volumineuses.

Vérifiez d’abord la taille des tables Action Scheduler :

wp db query "
SELECT
    table_name,
    ROUND( ( data_length + index_length ) / 1024 / 1024, 2 ) AS size_mb
FROM information_schema.TABLES
WHERE table_schema = DATABASE()
AND table_name LIKE '%actionscheduler%'
ORDER BY size_mb DESC;
"Langage du code : PHP (php)

Vous pouvez ensuite consulter l’état des actions planifiées si les commandes Action Scheduler sont disponibles :

wp action-scheduler action list --status=failed --per-page=20
wp action-scheduler action list --status=pending --per-page=20
wp action-scheduler action list --status=complete --per-page=20Langage du code : PHP (php)

Si les actions terminées s’accumulent, utilisez les commandes prévues par Action Scheduler ou les outils WooCommerce disponibles sur votre site. Évitez de vider les tables à la main, surtout sur une boutique en production.

Sur WooCommerce, ces tables racontent souvent l’histoire du site : paiements, abonnements, relances, webhooks, emails, synchronisations. On lit avant d’effacer.

Optimiser la base après un vrai nettoyage

Une fois les données inutiles supprimées, vous pouvez optimiser les tables :

wp db optimize

Cette commande lance une optimisation des tables de la base WordPress. Elle peut être utile après une suppression importante de données, par exemple après le nettoyage massif de logs, de révisions ou de tables très volumineuses.

En revanche, elle n’a pas besoin d’être lancée toutes les semaines sur tous les sites. Sur MySQL avec InnoDB, OPTIMIZE TABLE peut reconstruire les tables et les index. Cela peut donc consommer des ressources. Lancez-la plutôt pendant une période calme, notamment sur un site WooCommerce actif.

Activer l’outil de réparation WordPress sans WP-CLI

Si vous n’avez pas accès à WP-CLI, WordPress possède un outil intégré de réparation et d’optimisation. Il se déclenche via une constante à ajouter temporairement dans wp-config.php :

define( 'WP_ALLOW_REPAIR', true );Langage du code : JavaScript (javascript)

Vous pouvez ensuite ouvrir cette URL :

https://example.com/wp-admin/maint/repair.phpLangage du code : JavaScript (javascript)

WordPress proposera deux actions : réparer la base, ou réparer et optimiser la base.

Une fois l’opération terminée, supprimez immédiatement cette ligne de wp-config.php. Cet outil ne demande pas d’authentification lorsqu’il est activé, car il sert aussi aux cas où la base empêche l’accès à l’administration.

C’est une bonne roue de secours. Toutefois, sur un serveur correctement administré, WP-CLI reste plus précis et plus confortable.

Ce qu’il ne faut pas automatiser aveuglément

Automatiser une maintenance WordPress peut être utile. Mais il ne faut pas automatiser n’importe quoi.

Un bon cron peut sauvegarder la base, enregistrer la taille des tables, signaler une croissance anormale, ou supprimer certains caches expirés. En revanche, un cron qui lance repair et optimize sur toute la base chaque semaine n’est pas une bonne pratique.

La réparation doit répondre à une erreur. L’optimisation doit suivre un vrai nettoyage. Le monitoring, lui, peut tourner régulièrement.

Par exemple, vous pouvez surveiller la taille globale de la base :

wp db size --human-readable

Ou enregistrer les plus grosses tables dans un rapport :

wp db query "
SELECT
    table_name,
    ROUND( ( data_length + index_length ) / 1024 / 1024, 2 ) AS size_mb
FROM information_schema.TABLES
WHERE table_schema = DATABASE()
ORDER BY size_mb DESC
LIMIT 20;
"Langage du code : PHP (php)

C’est beaucoup plus utile qu’un nettoyage automatique trop agressif. Une bonne maintenance ne fait pas du bruit. Elle donne de la visibilité.

Checklist de maintenance WordPress 2026

Voici une séquence saine pour vérifier et optimiser une base WordPress moderne :

cd /home/www/example.com/public_html

wp core is-installed

mkdir -p ~/backups

wp db export ~/backups/wordpress-db-$(date +%Y-%m-%d-%H%M%S).sql

wp db check

wp db size --tables --human-readable

wp transient delete --expired

wp db query "
SELECT
    table_name AS table_name,
    ROUND( ( data_length + index_length ) / 1024 / 1024, 2 ) AS size_mb
FROM information_schema.TABLES
WHERE table_schema = DATABASE()
ORDER BY size_mb DESC
LIMIT 20;
"

wp db optimizeLangage du code : PHP (php)

Sur un WooCommerce, ajoutez une vérification des outils disponibles :

wp wc tool list --user=1Langage du code : PHP (php)

Puis lancez uniquement les outils pertinents pour votre site. Sur une boutique, chaque table peut avoir un rôle opérationnel. On évite donc les grands gestes héroïques. Ils finissent rarement bien.

Conclusion

Optimiser une base WordPress en 2026 demande moins de magie et plus de méthode. WP-CLI fournit tout ce qu’il faut : exporter, vérifier, mesurer, nettoyer, réparer si nécessaire, puis optimiser après un vrai ménage.

La meilleure stratégie tient en une règle simple : ne touchez jamais une base sans sauvegarde, et ne nettoyez jamais sans diagnostic.

Avec cette approche, vous gardez une base WordPress plus légère, plus lisible et plus facile à maintenir. Et surtout, vous évitez de confondre optimisation et roulette russe SQL.

Sources

Demandez à l'IA son opinion
Gravatar for Matt Biscay

Je suis Matt Biscay, développeur WordPress & WooCommerce certifié chez Codeable, administrateur système et enseignant.

J’aide les entreprises à créer, optimiser et fiabiliser leurs sites WordPress avec une approche technique propre : performance, sécurité, maintenance, développement sur mesure et résolution de problèmes complexes.

Sur Skyminds, je partage des tutoriels WordPress, WooCommerce, Linux et administration système, avec des solutions testées sur des cas réels et pensées pour durer.

Découvrez mes services WordPress et WooCommerce.

Laisser un commentaire