Comment nettoyer et optimiser votre base de données WordPress ?

Mauvaise surprise en ce week-end, non pas la pluie qui s’abat sur ma charmante ville de Perpignan depuis déjà 2 semaines mais plutôt un mail pas très plaisant de la part de mon hébergeur. En effet, au réveille samedi matin, mon café à la main, OVH m’annonce que ma base de données est remplie à plus de 90% et que si jamais je ne fais rien pour l’alléger de quelques Mégaoctets, elle serait alors suspendue avec comme résultat final le site HS.

C’est mal connaître Julien, je vous le dis car à l’heure où j’écris ces quelques lignes, ma tendre et cher base de données est passée de 48 Mo à seulement 7 Mo. Voici mes astuces …

Comment nettoyer et optimiser votre base de données WordPress ?

Pensez à sauvegarder votre base de données avant d’y apporter n’importe quelle modification. Pour cela, vous pouvez utiliser l’extension WordPress Database Backup

Supprimer les révisions d’articles

Ce qui est intéressant dans WordPress c’est de pouvoir sauvegarder un article en cours de rédaction pour pouvoir le reprendre plus tard ou tout simplement pour le planifier à une date bien précise. Malheureusement le CMS abuse trop des bonnes choses et créer des sauvegardes à tout va ce qui au final encombre fortement la base de données. Pour remédier à ce problème, il peut être intéressant d’enregistrer uniquement les 3 ou 5 dernières sauvegardes. Voici comment faire :

Connectez-vous à la racine de votre blog WordPress à l’aide d’un client FTP, éditez le fichier « wp-config.php » puis ajoutez la ligne suivante à la fin.

// Limiter à 5 sauvegardes la révision des articles
define('WP_POST_REVISIONS', 5)

Ceci permet de dire à WordPress d’enregistrer uniquement les 5 dernières sauvegardes créées. Si vous souhaitez désactiver complètement le système de révision, ajoutez cette ligne à la place de la précédente.

// Désactiver la révision des articles
define('WP_POST_REVISIONS', false)

Voilà, votre base de données est un peu plus optimisée mais pas encore nettoyée. Pour supprimer les anciennes révisions, vous allez devoir exécuter la requête SQL suivante :
(n’oubliez pas de modifier le préfixe de vos tables si nécessaire)

DELETE a,b,c
FROM wp_posts a
LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)
WHERE a.post_type = 'revision'

Grâce à cette première modification, ma base de données est passée de 48 Mo à 14 Mo. Autant dire que ce n’est pas négligeable du tout. Passons à la deuxième optimisation …

Nettoyer les tables d’Akismet

Vous connaissez et vous utilisez (en tout cas je vous le conseil) très certainement Akismet, le célèbre plugin permettant de lutter contre le spam sur votre blog WordPress. Ce dernier amasse de nombreuses informations au fil du temps et fait grossir de manière importante votre base de données. Afin d’offrir un grain d’optimisation à votre BDD, vous allez devoir effectuer un gros nettoyage de printemps aux tables créées par ce plugin. Voici comment faire :

La première chose à faire est de vérifier si des entrées contenues dans la table « wp_commentmeta » ne sont plus en relation avec la table des commentaires « wp_comments ». Pour cela, exécutez la requête SQL suivante :
(n’oubliez pas de modifier le préfixe de vos tables si nécessaire)

SELECT *
FROM wp_commentmeta
WHERE comment_id NOT IN (
SELECT comment_id
FROM wp_comments)

Si, après cette vérification, des entrées contenues dans la table « wp_commentmeta » ne sont plus en relation avec la table « wp_comments », supprimez-les à l’aide de requête suivante :

DELETE FROM wp_commentmeta
WHERE comment_id NOT IN (
SELECT comment_id
FROM wp_comments)

Une fois les entrées inutiles supprimées, vous allez pouvoir vider la table « wp_commentmeta » des enregistrements liés à Akismet. Pour cela, effectuez dans un premier temps la requête SQL suivante :

SELECT *
FROM wp_commentmeta
WHERE meta_key LIKE "%akismet%"

Pour finir, supprimez le tout en exécutant cette dernière requête :

DELETE FROM wp_commentmeta
WHERE meta_key LIKE "%akismet%"

Grâce à cette deuxième et dernière modification, ma base de données est passée de 14 Mo à 7 Mo.

Si vous avez effectuez toutes les opérations décrites dans cet article, vous devriez à présent être en possession d’une base de données complètement vidée de choses inutiles et parée pour l’avenir. Pensez tout de même à optimiser le tout à l’aide des plugins WordPress Database Optimizer et Database Cache Reloaded Fix.

Et vous, avez-vous des conseils à nous donner pour nettoyer et optimiser nos bases de données ?

  • WordPress Developpez avec PHP extensions widgets et themes avances theorie TP ressources 4e edition
  • WordPress Developpez des themes avances avec PHP theorie TP ressources 5e edition Developpez des themes avances avec PHP theorie TP ressources 5e edition
votes
Noter cet article
S’abonner
Notifier de
guest
3 Commentaires
le plus populaire
le plus récent le plus ancien
Inline Feedbacks
View all comments
Océane
Océane
20 juillet 2021

Merci infiniment !!! Je perdais espoir me voilà de nouveau sur la bonne voie.

Francis
Francis
21 juillet 2022

Bonjour,
Juste une petite remarque : le plugin DB Cache Reloaded Fix n’a pas été mis à jour depuis… 10 ans. A éviter.Quant à wp-db-optimizer, il n’est plus disponible.
Personnellement j’ai testé et adopté WP-Sweep qui propose plusieurs options et un nettoyage en profondeur de la base de données.

Last edited 1 année il y a by Francis
Support
Administrateur
28 novembre 2022
Reply to  Francis

J’ai eu quelques cataclysmes avec DB Cache Reloade Fix en plus …
Je suis passé à Memcached sur tous mes sites (c’est un module de cache de base de données, comme Redis, qui est dispo en standard chez o2switch)