Présentation du visualiseur du plan de requête

Cette page décrit les principaux composants du visualiseur de plan de requête.

L'outil de visualisation du plan de requête dans la console Google Cloud vous aide à comprendre la structure du plan d'exécution choisi par Spanner pour évaluer une requête.

Le visualiseur affiche le plan sous forme de graphique visuel, ce qui facilite l'analyse de l'exécution de vos requêtes par Spanner et l'identification des goulots d'étranglement potentiels. Vous pouvez utiliser le visualiseur de plan de requête pour effectuer l'une des opérations suivantes :

  • Déboguer les requêtes lentes : identifiez la partie du plan de requête qui prend le plus de temps ou de ressources.
  • Valider les optimisations : comparez les plans de requête avant et après avoir apporté des modifications (comme l'ajout d'un index ou la réécriture d'une jointure) pour vérifier les améliorations.
  • Comprendre le comportement des requêtes : découvrez comment Spanner traite les instructions SQL complexes, y compris les jointures, les agrégations et les opérations distribuées.

Avantages du visualiseur de plan de requête

Les plans de requête peuvent être complexes. Le visualiseur simplifie l'analyse des plans en fournissant les fonctionnalités suivantes :

  • Représentation graphique : affiche le flux de données des tables et des index via différents opérateurs jusqu'au résultat final.
  • Insights sur les performances : identifie les opérateurs coûteux avec des repères visuels pour une latence et une consommation de processeur élevées.
  • Visualisation du nombre de lignes : affiche le volume de données à chaque étape avec des indicateurs d'épaisseur de ligne.
  • Statistiques détaillées : fournit des statistiques d'exécution spécifiques pour chaque opérateur.

Accéder au visualiseur de plan de requête

Vous pouvez accéder au visualiseur de plan de requête dans la console Google Cloud de l'une des manières suivantes :

  • Spanner Studio : générez un plan de requête en direct et à la demande tout en écrivant et en testant des requêtes.
  • Insights sur les requêtes : affichez les plans de requêtes historiques échantillonnés capturés à partir des charges de travail de production au fil du temps.

Afficher un plan à la demande dans Spanner Studio

Pour afficher un plan de requête à la demande pour une requête dans Spanner Studio :

  1. Dans la console Google Cloud , accédez à la page Instances de Spanner.

    Accéder à la page Instances

  2. Cliquez sur le nom de l'instance contenant la base de données que vous souhaitez interroger.

  3. Dans la liste Bases de données, cliquez sur le nom de votre base de données.

  4. Dans le menu de navigation, cliquez sur Spanner Studio.

  5. Dans le volet de l'éditeur, saisissez votre requête SQL.

  6. Cliquez sur Exécuter.

  7. Cliquez sur l'onglet Explication.

Afficher un plan échantillonné dans Insights sur les requêtes

Pour afficher un plan de requête échantillonné historique dans Insights sur les requêtes :

  1. Dans la console Google Cloud , accédez à la page Instances de Spanner.

    Accéder à la page Instances

  2. Cliquez sur le nom de l'instance contenant la base de données que vous souhaitez examiner.

  3. Dans le menu de navigation, cliquez sur Insights sur les requêtes.

  4. Sélectionnez la base de données et la période que vous souhaitez analyser.

  5. Dans le tableau Requêtes TopN, cliquez sur la requête ou le tag de requête que vous souhaitez inspecter.

  6. Dans le graphique Échantillons de plans de requête, cliquez sur un point d'échantillon représentant une exécution de requête.

  7. Dans la section Visualiseur du plan de requête, affichez le plan d'exécution visuel.

L'outil de visualisation affiche le plan de requête sous la forme d'un graphe orienté acyclique (DAG).

Outil de visualisation de plans de requête annoté

La visualisation du plan de requête peut être volumineuse, selon la requête que vous avez exécutée. Pour masquer ou afficher les détails, cliquez sur le sélecteur de vue Développée/Compacte. Pour faire un zoom avant ou arrière, utilisez la commande de zoom.

L'interface du visualiseur fournit les panneaux d'informations suivants :

Pour télécharger le plan de requête visualisé, cliquez sur Télécharger au format JSON. Pour afficher le plan de requête ultérieurement, vous pouvez réimporter le profil JSON téléchargé dans Spanner Studio. Si vous devez résoudre des problèmes de performances, partagez le fichier JSON avec l'équipe d'assistance Spanner.

Graphe acyclique du plan de requête

La logique utilisée par Spanner pour exécuter la requête s'affiche sous la forme d'un DAG. Le graphique affiche le flux de données de bas en haut. Les tables et les index apparaissent en bas, et le résultat final de la requête apparaît en haut.

Chaque nœud du graphique est représenté par une fiche. Chaque fiche représente un itérateur qui consomme des lignes de ses entrées et produit des lignes pour son parent.

Les lignes qui relient les fiches représentent le flux de lignes entre les itérateurs. L'épaisseur de la ligne indique le nombre relatif de lignes transmises. Plus les lignes sont épaisses, plus il y a de lignes.

Chaque fiche du graphique contient les informations suivantes :

  • Nom de l'itérateur : nom de l'itérateur.
  • Statistiques d'exécution : nombre de lignes renvoyées, latence et utilisation du processeur.

Cliquez sur une fiche pour afficher plus d'informations sur la latence, l'utilisation du processeur, les lignes renvoyées, le nombre d'exécutions et le nombre de groupes de machines.

Pour en savoir plus sur les opérateurs, consultez Opérateurs d'exécution de requêtes.

Les requêtes Spanner récupèrent souvent des données à partir de plusieurs divisions de base de données. Un groupe de machines représente un ensemble d'opérateurs d'exécution de requêtes contigus qui s'exécutent ensemble pour un ensemble de divisions. Au sein d'un même groupe de machines, les opérateurs s'exécutent de manière séquentielle, de bas en haut, tandis que les différents groupes de machines s'exécutent en parallèle. Lorsque les données sont déplacées entre des divisions au-delà des limites du groupe de machines, elles transitent par des appels de procédure à distance (RPC).

Pour en savoir plus sur les divisions, consultez Divisions de base de données.

L'outil de visualisation vous aide à distinguer la distribution logique de la distribution physique :

  • Limites logiques : les fiches portant l'étiquette Distribué indiquent l'endroit où le planificateur de requêtes a divisé la logique de la requête.
  • Distribution physique : les couleurs des groupes de machines sur le graphique représentent l'exécution physique réelle dérivée des statistiques d'exécution.

Les limites physiques s'alignent souvent sur les opérateurs logiques distribués, mais elles peuvent différer en fonction de la façon dont les divisions sont placées sur les serveurs.

Récapitulatif de la requête

Le volet Résumé de la requête fournit les métriques d'exécution générales suivantes et met en évidence les goulots d'étranglement potentiels dans la requête :

  • Temps total écoulé : temps total nécessaire pour exécuter la requête du début à la fin.
  • Temps CPU : temps CPU cumulé consommé par tous les threads et serveurs traitant la requête.
  • Temps de création du plan : temps passé par le compilateur et l'optimiseur de requêtes à générer le plan d'exécution.
  • Délai de file d'attente du serveur : durée pendant laquelle la requête a attendu dans les files d'attente du serveur avant le début du traitement.
  • Lignes renvoyées : nombre total de lignes renvoyées dans le résultat final de la requête.
  • Lignes analysées : nombre total de lignes lues à partir de l'espace de stockage dans l'ensemble des tables et index analysés.
  • Appels distants : nombre total de RPC effectués entre des divisions ou des groupes de machines.
  • Version de l'optimiseur de requêtes : version de l'optimiseur de requêtes Spanner utilisée pour compiler le plan.
  • Package de statistiques : package de statistiques de l'optimiseur utilisé pour l'optimisation basée sur les coûts.

Principaux opérateurs

La section Opérateurs importants met en évidence les itérateurs qui consomment le plus de ressources dans le plan de requête :

  • Latence la plus élevée : opérateur dont la durée d'exécution est la plus longue.
  • Temps CPU le plus élevé : opérateur qui a consommé le plus de temps CPU.
  • Nombre de lignes le plus élevé : opérateur qui a traité ou renvoyé le plus de lignes.

Chronologie d'exécution des requêtes

L'onglet Chronologie d'exécution de la requête affiche un graphique temporel qui indique la durée d'exécution de chaque groupe de machines pour sa partie de la requête. Un groupe de machines peut ne pas s'exécuter pendant toute la durée de la requête, ou s'exécuter plusieurs fois. Toutefois, la chronologie n'affiche que l'heure de début de son exécution initiale et l'heure de fin de son exécution finale.

Indicateurs visuels pour les performances

Le visualiseur utilise les couleurs et les icônes suivantes pour vous aider à identifier les problèmes :

  • Barres rouges : indiquent le pourcentage de latence ou de temps CPU consommé par cet opérateur par rapport à la requête totale.
  • Triangles d'avertissement : indiquent qu'une analyse complète de la table a eu lieu. Ces analyses suggèrent souvent une opportunité d'optimiser la requête, par exemple en ajoutant un index secondaire.
  • Couleurs des groupes de machines : différencient les groupes de machines et mettent en évidence les transitions entre les groupes. Ces transitions nécessitent une exécution à distance sur différentes machines, ce qui entraîne une surcharge de sérialisation et de réseau. La chronologie d'exécution de la requête affiche également ces couleurs de groupe de machines.

Étapes suivantes