Optimiser sa base de données MySQL Wordpress

Si comme moi, vous utilisez WordPress comme CMS, il se peut que vous remarquiez que votre base de données MySQL grossit, c’est normal car ce CMS y écrit toutes les informations nécessaires  à son bon fonctionnement. (Options, Articles,  Utilisateurs, etc). Il est nécessaire de faire du nettoyage régulièrement  ou / et de mettre en place des solutions. A noter également qu’une base de données optimisé permet un affichage plus rapide de votre blog.

Je vais donc vous présenter une série  d’astuces pour vous aider dans cette tâche.

 
 

Faites un Backup !

Avant toute opération, je vous recommande de SAUVEGARDER VOTRE BASE DONNÉES, car si celle-ci est corrompu, vous n’aurez plus de blog ! Je vais vous présenter rapidement deux options.

Pour ce faire, rien de plus simple, je vous présente ici la méthode rapide à l’aide d’un plugin WP-DB-Backup, qui est certes vieux, mais qui fait très bien son travail. Il vous suffit de l’installer sur votre CMS, le reste est très intuitif.

Pour les plus chevronnés, vous pouvez sauvegarder votre base depuis l’interface PhpMyAdmin. Pour se faire, sélectionnez votre base de données. Vous devriez avoir plusieurs onglets en haut de la page, cliquez alors sur « Exporter ». Cliquez ensuite sur « Tout sélectionner » pour avoir toutes vos tables. Pour finir, sélectionnez le mode « Gzippé » pour gagner en taille et faites « Exécuter ». Voilà, vous avez un backup de votre base, nous pouvons commencer à optimiser votre base.

 
 

 
 

Révisions / Versions  par article

WordPress a une option par défaut qui permet de garder un historique de chaque version d’un article après que vous ayez opéré une action et enregistre également  automatiquement une copie tous les x minutes.

Cette copie est très pratique en cas de problème sur l’article, vous pouvez revenir aisément à une ancienne version, mais il faut savoir que chaque copie est mise en base, et cela peut vite alourdir celle-ci.
Nous allons commencer par optimiser votre base en deux étapes:

→ La première consiste à modifier le fichier « wp-config.php« . Ici encore je vous recommande de faire une copie de celui-ci pour éviter un quelconque problème.
Insérer pour commande ce bout de code à la fin de votre fichier :

// Ce bout de code permet d'enregistrer les 5 dernières sauvegardes
// / révisions / versions d'un article
define('WP_POST_REVISIONS', 5);

Ce code indique tout simplement que WordPress va uniquement enregistrer les 5 dernières sauvegardes / révisions d’un article.

Vous pouvez également choisir l’interval de temps entre chaque révisions d’un articles en secondes.

// Ce bout de code permet d'indiquer que les sauvegardes
// / révisions / versions d'un article se feront toutes les heures
define('AUTOSAVE_INTERVAL', 3600);

Pour allez plus vite, petit récap : 3600s = 1 heure | 2700s = 45 minutes| 1800s = 30 minutes | 1500s = 25 minutes | 600s = 10 minutes | 300s = 5 minutes

Pour finir, vous pouvez également désactiver le processus de révisions avec le code ci-dessous.

 // Ce bout de code permet de désativer les sauvegardes
// / révisions / versions d'un article
define('WP_POST_REVISIONS', false);

 
→ Passons à la deuxième étape, nous allons maintenant utiliser deux requêtes qui vont permettre de supprimer toutes les « révisions » de vos articles.

Cette première requête va permettre de supprimer toutes les sauvegarde d’articles :

DELETE FROM wp_posts WHERE post_type = 'revision';

Lancez ensuite cette requête SQL qui permet de supprimer les sauvegardes  des  tables wp_term_relationship et wp_postmeta :

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';

 
 

 
 

Nettoyez efficacement la table Akismet

Si vous utilisez le plugin Akismet pour contrer le spam sur votre blog, celui-ci met fait grossir de manière importante votre table  wp_commentmeta.
Pour contrer ce problème, voici quelques requêtes SQL à exécuter.

Dans un premier temps, nous allons vérifier que cette commande nous retourne un résultat :

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

Si c’est le cas, cela indique que vous avez des entrées qui ne sont plus en relation avec la table des commentaires, ce qui est bon signe, nous allons pouvoir faire du nettoyage.

Supprimez donc ces entrées avec la requête suivante:

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

 
Nous allons aller encore plus loin à l’aide cette requête qui va permettre de nous lister tous les champs portant  le nom « akismet ».

SELECT *
FROM wp_commentmeta
WHERE meta_key LIKE '%akismet%';

Si cette requête vous retourne des entrées, lancez donc cette requête:

DELETE FROM wp_commentmeta
WHERE meta_key LIKE '%akismet%';

Pour finir, n’oubliez pas d’optimiser votre base. Sur l’interface PhpMyAdmin, cochez toutes vos bases et sélectionnez le mode « Optimiser la table ».

Pour ma part, ces manipulations m’ont permis de passer de 89Mo à 42Mo !

 
 

 
 

Plugins intéressants

Pour finir, je vais vous lister quelques plugins intéressants touchant à votre base.

Quitter la version mobile