Concours
Accueil » Astuces » Optimiser sa base de données MySQL WordPress
Optimiser sa base de données MySQL WordPress

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.

 
 
wordpress-tips-bdd

 
 

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

 
 
database-picture

 
 

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 !

 
 
wordpress-plugin-picture

 
 

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

A propos de @lex

Fondateur d'Utopiie, et créateur de ce blog, Alexandre ARSAC est un technicien réseau  passionné par tout ce qui touche à l'informatique et à la photographie.

8 commentaires

  1. Merci pour ce post intéressant. Il est conseillé de réaliser cette opération régulièrement.

  2. 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

  3. 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 …

  4. 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 !

  5. Très intéressant, je savais pas pour Akismet, je vais y regarder de plus près !

  6. 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

Répondre

Votre adresse email ne sera pas publiée. Les champs obligatoires sont marqués d'une étoile *

*

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

:smile: :wink: :tongue: :love: more »

Affichez votre travail gratuitement sur Alex Blog !