Table des matières
Il y a un moment où nous travaillons avec des bases de données qu'il ne s'agit plus seulement d'obtenir les informations qui nous concernent, mais comment nous les obtenons, car en fonction de la construction de la requête ce sera la quantité de ressources que notre requête consommera, pour cela PostgreSQL nous offre EXPLIQUE un outil avec lequel nous voyons comment notre requête s'exécute et tout ce qu'elle représente.EXPLIQUER et EXPLIQUER ANALYSER
Ces deux outils sont la base principale pour rechercher les problèmes de performances des requêtes que nous effectuons, malgré leur utilité, ils ne sont pas nouveaux puisqu'ils ont été inclus dans PostgreSQL Depuis ses premières années, mais cela ne signifie pas qu'ils sont obsolètes ou dépassés, au contraire, ils ont mûri pour devenir un outil capable de produire les rapports les plus détaillés sur l'exécution des requêtes, y compris les résultats émis par l'outil peuvent être obtenu dans des formats tels que XML ou alors JSON pour une analyse ultérieure avec d'autres outils.
Dans pgAdmin nous disposons d'une option pour obtenir un graphique du résultat de EXPLIQUE de sorte qu'au lieu d'analyser des chiffres, nous pouvons voir un graphique et ainsi détecter plus facilement les problèmes de la requête et les opportunités d'amélioration.
Différences entre EXPLAIN et EXPLAIN ANALYSE
Peut-être que les deux termes sont utilisés comme s'ils étaient la même chose, mais entre eux, nous avons des différences, par exemple EXPLIQUE nous donne une idée de la façon dont le planificateur de requêtes a l'intention d'exécuter la requête, mais il ne l'exécute pas, à la place EXPLIQUER ANALYSER si vous l'exécutez et cela nous donne une comparaison entre les performances attendues et les performances réelles obtenues lors de l'exécution. Au lancement EXPLIQUE passant par pgAdmin Nous pouvons choisir entre EXPLAIN et EXPLAIN ANALYZE, ce qui nous donnera le résultat de chacun au fur et à mesure que nous les sélectionnons
Voyons un exemple d'utilisation de cet outil, pour cela nous allons utiliser EXPLIQUER ANALYSER, voyons le code suivant :
EXPLAIN ANALYSE SELECT gauche (tract_id, 5) As county_code, SUM (hispanic_or_latino) As tot, SUM (white_alone) As tot_white, SUM (coalesce (hispanic_or_latino, 0) - coalesce (white_alone, 0)) AS non_white FROM recensement.hisp_pop GROUP BY county_code ***** BY county_code;
C'est une requête très simple où l'on additionne les champs, regroupe et classe selon l'un des champs, ce que l'on obtiendra à la suite de l'analyse des performances sera le suivant :
GroupAggregate (coût = 111,29… 151,93 lignes = 1478) (temps réel = 6,099… 10,194 lignes = 14 boucles = 1) -> Trier (coût = 111,29… 114,98 lignes = 1478) (temps réel = 5,897… 6,565 lignes = 1478 boucles = 1) Clé de tri : ("gauche" ((tract_id) :: texte, 5)) Méthode de tri : quicksort Mémoire : 136 ko -> Seq Scan sur hisp_pop (coût = 0,00… 33,48 lignes = 1478) (temps réel = 0,390… 2,693 lignes = 1478 boucles = 1) Durée d'exécution totale : 10 370 ms
Si nous mettons un peu d'effort dans la lecture, les résultats deviennent progressivement plus faciles à lire pour nous, cependant si nous n'avons pas beaucoup de temps ou si le résultat est très étendu, nous pouvons toujours voir le graphique.
Comme on peut le voir, il est plus rapide de voir les résultats au niveau graphique, l'idéal est d'utiliser les deux outils et de compléter les deux points de vue, c'est la même information seulement avec des angles différents, il y aura des puristes qui voudront seulement travailler avec la console de commande et c'est très bien, mais un professionnel de la base de données complète doit utiliser tous les outils à sa disposition pour améliorer son travail.
Avec cela, nous terminons le tutoriel, avec l'utilisation de ces outils, nous serons déjà en mesure de détecter les causes qui rendent nos requêtes pas rapides ou les opportunités d'amélioration pour optimiser notre requête.Avez-vous aimé et aidé ce tutoriel ?Vous pouvez récompenser l'auteur en appuyant sur ce bouton pour lui donner un point positif