Cette page décrit Calíope 1.7, la version que je construis en ce moment. La 1.6 est sur l'App Store pour Mac, iPad, iPhone, Apple Watch, Apple TV et Apple Vision Pro. Le changelog indique dans quelle version chaque fonction est arrivée.

Ajoute un bouton « Ouvrir dans Calíope » à chaque sujet. Ne fonctionne qu'avec l'app installée.

Visual EXPLAIN

Visualiser le plan d'exécution

Affiche l'arbre des opérations de l'optimiseur de requêtes.

Où le trouver : Éditeur SQL › Visual EXPLAIN

Avec une requête SELECT dans l'Éditeur SQL, cliquez sur Visual EXPLAIN dans la barre d'outils. Calíope demande le plan au serveur sans exécuter la requête —EXPLAIN FORMAT=JSON dans MySQL et MariaDB, EXPLAIN (FORMAT JSON) dans PostgreSQL, SET SHOWPLAN_XML dans SQL Server, EXPLAIN PLAN json = 1 dans ClickHouse, EXPLAIN PLAN FOR dans Oracle— et ouvre l'onglet Visual EXPLAIN avec l'arbre de nœuds du plan.

Chaque nœud affiche le type d'accès, l'index utilisé (le cas échéant), l'estimation du nombre de lignes et le détail qu'ajoute le moteur : la condition, l'index choisi ou le coût. Le temps n'apparaît que si le moteur l'a mesuré, et sans exécuter la requête aucun ne le mesure.

Oracle

Dans Oracle, le plan est écrit dans PLAN_TABLE, et Calíope efface ses lignes dès qu'il le lit : demander le plan est une écriture sur le serveur, même si la requête est un SELECT. Le détail de chaque nœud porte l'opération (TABLE ACCESS FULL, INDEX RANGE SCAN), les prédicats access et filter, et le coût avec les octets estimés.

ClickHouse

Dans ClickHouse, la lecture de chaque table est jaune si la clé ou un index de saut a écarté des granules, et rouge si elle les a tous lus. Son détail commence par les granules lus sur ceux qu'il y avait (« granules 2/123 »), continue avec ce qu'a écarté chaque index, en granules et en parts, et finit par l'estimation des lignes, parts et marques.

Naviguer dans l'arbre :
- macOS : la molette de la souris ou un pincement à deux doigts sur le trackpad pour le zoom ; faites glisser pour déplacer le canevas.
- iPad : pincez à deux doigts pour le zoom, et faites glisser avec un doigt pour vous déplacer.
- Partout : les boutons − et + de la barre, avec le pourcentage entre les deux, et Ajuster à la fenêtre pour cadrer l'arbre entier. Les raccourcis sont ⌘−, ⌘+ et ⌘0.

L'échelle va de 18 % à 350 %, ce qui laisse largement de quoi lire des plans à nombreux niveaux d'imbrication.

Apple Vision Pro : comme sur iPad, avec ses propres gestes : pincer et déplacer pour faire défiler le canevas, et pincer à deux mains pour le zoom. Les boutons et les raccourcis sont les mêmes.

Mots-clés : explain, plan, optimiseur, arbre, JSON explain, zoom, pan, naviguer, pinch

Interpréter les couleurs d'accès

Les couleurs des nœuds indiquent l'efficacité de l'accès aux données.

Où le trouver : Visual EXPLAIN › Légende des couleurs

Les nœuds du Visual EXPLAIN sont colorés selon le type d'accès, et chaque carte l'écrit aussi dans sa ligne Accès : vert = recherche par clé ou constante (le moteur va droit à la ligne, ou ne lit aucune donnée), jaune = parcours d'une plage d'un index, orange = parcours d'un index entier, rouge = parcours complet de la table (sans index, le pire cas), bleu = tri, violet = jointure de plusieurs tables, gris = le reste (une agrégation, une sous-requête ou une opération que Calíope ne classe pas). La légende de la barre nomme les quatre qui en disent le plus : vert, jaune, rouge et bleu.

Un nœud rouge indique une opportunité d'optimisation, généralement en ajoutant un index.

Mots-clés : full scan, range, index, couleurs, optimisation, explain

Visual EXPLAIN avec VoiceOver

Le canevas est un dessin que VoiceOver ne peut pas lire : le plan est donné comme une liste dans l’ordre de l’arbre, indentée par profondeur.

Où le trouver : Espace de travail › Outils › EXPLAIN

Le canevas du plan est un dessin que VoiceOver ne peut pas lire ; Calíope le propose donc sous forme de liste. La section Hiérarchie du Plan d'Exécution a une ligne par nœud, dans l’ordre de l’arbre et indentée par profondeur, avec le nom du nœud et son type d’accès, les lignes estimées, le temps et le détail. Le temps affiche toujours « — », car le plan est demandé sans exécuter la requête.

Cela fonctionne de la même façon sur toutes les plateformes.

Mots-clés : VoiceOver, accessibilité, EXPLAIN, plan, nœuds