Visualiser un plan EXPLAIN Postgres et MySQL

Un visualiseur de plan EXPLAIN qui trouve l’étape lente.

Collez un plan EXPLAIN Postgres ou MySQL au format JSON et le visualiseur de plan EXPLAIN de LetDraw le dessine sous forme d’arbre, une boîte par nœud du plan avec son coût, ses lignes et son temps. Une carte de chaleur colore chaque nœud selon le temps ou le coût qu’il ajoute lui-même, et l’étape lente de la requête s’allume en rouge.

Requête · EXPLAIN ANALYZE
Sort cost 1290 rows 120 52.6 ms Nested Loop cost 1240 rows 120 49.8 ms Seq Scan · orders cost 912 rows 4800 38.2 ms Index Scan · users cost 8 rows 1 9.6 ms rapide lent
Étape par étape

Visualiser un plan EXPLAIN en quatre étapes

Lancez EXPLAIN en JSON, collez le résultat et lisez l’arbre au lieu d’un mur de texte.

  1. Obtenez le plan en JSON

    Dans Postgres, placez EXPLAIN (FORMAT JSON) devant votre requête, ou EXPLAIN (ANALYZE, FORMAT JSON) pour des temps réels. Dans MySQL, utilisez EXPLAIN FORMAT=JSON.

  2. Collez-le dans Générer à partir du code

    Ouvrez Générer à partir du code (une fonctionnalité Pro) depuis le menu Plus d’outils et collez. Le plan est reconnu automatiquement et un aperçu en direct s’affiche.

  3. Lisez la carte de chaleur

    Les nœuds verts ajoutent peu, les nœuds rouges ajoutent le plus. Disposez l’arbre de haut en bas ou de gauche à droite, selon ce qui se lit le mieux.

  4. Annotez et partagez

    Insérez l’arbre, ajoutez une note avec votre correctif sur la boîte rouge, puis partagez un lien ou exportez en PNG, SVG ou PDF.

Où passe vraiment le temps

Une carte de chaleur selon le temps propre, pas les totaux

Postgres indique le coût et le temps de façon cumulée, si bien que la racine d’un plan paraît toujours la plus coûteuse. Ce visualiseur de plan EXPLAIN soustrait les enfants de chaque nœud et colore selon ce que le nœud ajoute lui-même, du vert à l’ambre puis au rouge. Chaque boîte affiche le type de nœud et la table, l’index ou la fonction concernés, ainsi que le coût, les lignes et, avec ANALYZE, le temps en millisecondes sur l’ensemble des boucles.

  • EXPLAIN Postgres au format JSON, avec ou sans ANALYZE
  • EXPLAIN FORMAT=JSON de MySQL, avec chaque table, son type d’accès, son coût et ses lignes
  • S’exécute dans votre navigateur : le plan et les noms de vos tables restent sur votre machine
Essayer maintenant
EXPLAIN (ANALYZE, FORMAT JSON) SELECT * FROM orders o JOIN users u ON ...; [{ "Plan": { "Node Type": "Nested Loop", "Actual Total Time": 49.8, "Plans": [ ... ] }}] -- MySQL: EXPLAIN FORMAT=JSON Nested Loop 49.8 ms Seq Scan orders Index Scan users 38.2 ms ici
Cas d’usage

Des plans de requêtes lentes faciles à discuter

Un plan brut, une seule personne le déchiffre ; un arbre coloré, toute l’équipe le comprend.

Diagnostic des requêtes lentes

Trouvez le parcours séquentiel ou la jointure coûteuse en quelques secondes, au lieu de faire défiler du JSON imbriqué.

Avant et après un index

Collez les deux plans sur un même canevas et montrez précisément quel nœud est passé du rouge au vert.

Revues de code

Joignez le plan d’une nouvelle requête à la pull request pour que les relecteurs voient son coût, pas seulement son SQL.

Rapports d’incident

Exportez l’arbre en carte de chaleur en PNG, SVG ou PDF et placez le coupable directement dans le post-mortem.

Échanges entre développeurs et DBA

Partagez un tableau où les deux camps commentent les mêmes nœuds du plan en temps réel.

Comprendre les planificateurs de requêtes

Voyez comment jointures, parcours et tris s’imbriquent et pourquoi le planificateur les a choisis.

Questions

FAQ : visualiser un plan EXPLAIN

Quelle sortie EXPLAIN puis-je coller ?
EXPLAIN (FORMAT JSON) de Postgres, avec ou sans ANALYZE, et EXPLAIN FORMAT=JSON de MySQL. La sortie texte brut d’EXPLAIN n’est pas prise en charge, demandez donc du JSON.
Dois-je utiliser EXPLAIN ANALYZE ?
Oui, si vous pouvez vous permettre d’exécuter la requête. Avec ANALYZE, la carte de chaleur suit le temps mesuré ; sans lui, les couleurs suivent le coût estimé par le planificateur.
Mon plan de requête quitte-t-il le navigateur ?
Non. Le plan est analysé et mis en page entièrement dans votre navigateur. Seul le diagramme que vous insérez est enregistré, comme n’importe quel autre dessin.
Est-ce gratuit ?
Générer à partir du code, qui transforme un plan EXPLAIN en diagramme, fait partie des forfaits Pro et Enterprise. Le forfait Free vous donne tout de même le canevas complet, tous les types de diagrammes et l’export en PNG, SVG et PDF, sans carte bancaire.

Laissez le goulot d’étranglement se présenter.

Ouvrez LetDraw, collez votre plan EXPLAIN en JSON et voyez où la requête passe son temps.