L’identification des requêtes lentes pour les bases de données WordPress

Les requêtes SQL lentes influencent négativement la performance des sites WordPress. Parfois, les requêtes lentes sont le résultat d’un code SQL mal formulé qui devrait être réalisé differemment. Parfois les requêtes ne sont pas lentes au début ; mais au fil du temps et de l’évolution du site web, elles le deviennent puisque la base de données s’agrandit.

Quelles que soient les raisons pour lesquelles votre site est devenu lent, il existe des moyens pour trouver les requêtes qui mettent le plus de temps à s’exécuter dans WordPress.

La recherche des requêtes lentes comprend deux points :

  1. La définition des requêtes qui mettent le plus de temps à s’exécuter.
  2. La recherche du code qui les génère et les exécute

Dans cet article nous allons étudier deux plugins et une SaaS-solution, qui aident à trouver les requêtes lentes.

Query Monitor

Query Monitor – ce plugin affiche les differentes informations à propos de la page courante. Il vous offre des données statistiques détaillées sur les points suivants :

  • Combien de requêtes sont exécutées d’après ce critère de recherche
  • Quelles requêtes ont pris le maximum de temps à être traitées
  • Quelles fonctions sont traitées le plus lentement dans les requêtes SQL
  • Quelles requêtes viennent des plugins, des thèmes et du noyau WordPress

des requêtes lentes 1

Query Monitor met en évidence les requêtes lentes en rouge ce qui facilite la recherche des lignes de code SQL les plus problématiques :

des requêtes lentes 2

Debug Bar

Encore un instrument parfait pour la recherche des requêtes SQL lentes: le plugin Debug Bar. Debug Bar affiche l’information sur les processus internes de WordPress, quand vous chargez la page avec des données suivantes :

  1. Les paramètres WP_Query
  2. L’information d’appel (incluant le respect des règles de réécriture)
  3. Les requêtes SQL, générées par la page courante

Pour activer le troisième point en Debug Bar (suivi SQL), assurez-vous que SAVEQUERIES est activé sur votre site. On le fait d’habitude dans le fichier wp-config.php:

01 if ( ! defined( ‘SAVEQUERIES’ ) ) {
02   define( ‘SAVEQUERIES’, true );

 

03 }

La recherche des requêtes SQL lentes avec Debug Bar n’est pas si simple. Ce plugin n’a pas de tableaux avec des fonctions de tris et ne marque pas les requêtes lentes. Debug Bar assure le traçage des fonctions, ce qui permet de trouver l’origine des requêtes.

des requêtes lentes 3

Attention : SAVEQUERIES influence fortement la performance de votre site et ne doit pas être utilisé sur un site qui est déjà en ligne. N’utilisez SAVEQUERIES que pour les sites en cours de développement.

Ceci est la liste des fichiers téléchargés et des fonctions qui permettent à la requête de s’exécuter. Le dernier enregistrement sera ce qui vous intéressera le plus. C’est la requête la plus lente et c’est par elle que vous devez commencer votre recherche.

NewRelic

NewRelic – est un service qui permet de mesurer la performance de votre application web y compris WordPress. Ce service donne énormément d’informations sur votre site. Il est assez facile de se perdre dans toute les informations proposées : de l’exécution détaillée de votre code jusqu’au rapport par étapes des requêtes SQL.

des requêtes lentes 4

 

Il y a deux grandes differences entre NewRelic et les deux plugins proposés ci-dessus :

  1. NewRelic donne une information plus détaillée sur la performance de votre code PHP jusqu’aux millisecondes dépensées sur la réalisation de chaque fonctionalité.
  2. NewRelic analyse chaque requête sur votre site en arrière-plan, c’est-à-dire que vous pouvez analyser l’information plus tard tandis que les plugins ne donnent que l’information sur la page courante.

Il faut préciser que NewRelic propose une option gratuite qui permet d’afficher l’information générale sur la performance de votre site. Cependant, pour obtenir tous les détails nécessaires afin d’identifier les requêtes lentes vous serez obligés de choisir un tarif payant.

La recherche des requêtes lentes en utilisant EXPLAIN

Nous venons de passer en revue des instruments pour la recherche des requêtes lentes. Nous pouvons maintenant essayer de savoir pourquoi ces requêtes sont lentes.

MySQL EXPLAIN nous aidera à comprendre ce qui s’est passé. L’ajout d’ EXPLAIN au début de la requête montrera comment  MySQL exécute la requête. Au cas où on a affaire à des requêtes plus compliquées EXPLAIN aidera à trouver les parties lentes de vos requêtes SQL – par exemple des sous requêtes lentes et des processus inefficaces.

Par exemple si vous avez la requête suivante:

01 SELECT slow_column FROM slow_table

Vous pouvez ajouter EXPLAIN :

01 EXPLAIN SELECT slow_column FROM slow_table

Voici comment s’affiche EXPLAIN dans phpMyAdmin:

des requêtes lentes 5

Vous pouvez lancer EXPLAIN soit en utilisant une ligne de commande, soit en utilisant votre instrument MySQL.

Maintenant vous savez quelles requêtes sont lentes et EXPLAIN nous a montré pourquoi. Il ne nous reste plus qu’à corriger les erreurs. Nous en parlerons très bientôt dans un autre article.

Si cet article a été utile pour vous, n’hesitez pas à laisser vos commentaires.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *