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.
- WP-Optimize : qui permet d’optimiser et de nettoyer les tables sélectionnées.
- WP-DBManager : que je vous présenter ci-dessous qui permet de faire des backups de votre base régulièrement de manière automatique
Merci pour ce post intéressant. Il est conseillé de réaliser cette opération régulièrement.
Hello,
Pourrais-tu m’en dire plus de vérifier les réglages du plugin redirection sur la base ?
Merci :wacky:
Hello,
Merci de ton retour, petit problème effectivement que je viens de corriger. 🙂
Hello, tu as un souci avec les quote dans ta dernière requête 🙂 +100 enregistrements chez moi effacés avec la première, presque 200 avec la seconde
C’est toujours utile d’avoir dans sa « boite à outils » des requêtes SQL de ce genre. J’ai ma petite collection à moi …
Bon, au quotidien, je suis fainéant, j’utilise des plugins : ils le font aussi bien que moi et ne font pas d’erreurs. Enfin, au premier abord …
Il y a, par contre, un conseil très important qui est donné dans cet article : sauvegarder la base de données de son blog. À faire même si on ne fait pas d’opération particulière. Le plus simple est, encore, d’utiliser un plugin comme celui conseillé en fin d’article. C’est quand on a un pépin qu’on s’aperçoit de son importance …
Voilà quelques instructions SQL bien utiles, et la partie sur le paramétarge ou la désactivation des versions d’articles va me sauver pour un client qui a tendance à rédiger un article en 6 ou 7 heures, en tâche de fond : le nombre de révisions est déjà impressionnant. Merci !
Très intéressant, je savais pas pour Akismet, je vais y regarder de plus près !
J’ajouterai aussi de bien vérifier les réglages du plugin redirection, qui par défaut loggue TOUTES les requêtes faites sur les redirections, ce qui peut vite surcharger une base de données, ne pas hésiter à faire en sorte de ne garder les logs que quelques jours !
j’avais par exemple sur un blog 39Mo de logs redirections en 1 semaine