Analyser les performances des requêtes

Cette page explique comment utiliser le tableau de bord d'Insights sur les requêtes pour détecter et analyser les problèmes de performances.

Présentation des insights sur les requêtes

Les insights sur les requêtes vous permettent de détecter et de diagnostiquer les requêtes et les instruction LMD les problèmes de performances d'une base de données Spanner. Il offre une gestion intuitive et fournit des informations de diagnostic qui vous aident à aller au-delà pour identifier la cause des problèmes de performances.

Les insights sur les requêtes vous aident à améliorer les performances des requêtes Spanner en vous guidant à travers les étapes suivantes:

  1. Vérifiez si des requêtes inefficaces entraînent une utilisation élevée du processeur.
  2. Identifiez une requête ou un tag potentiellement problématique
  3. Analysez la requête ou le tag de demande pour identifier les problèmes.

Les insights sur les requêtes sont disponibles à la fois dans une seule région et dans plusieurs régions de configuration.

Tarifs

L'utilisation des insights sur les requêtes n'entraîne aucuns frais supplémentaires.

Conservation des données

La durée maximale de conservation des données pour les insights sur les requêtes est de 30 jours. Pour le graphique Utilisation totale du processeur (par requête ou tag de requête), les données sont issues des tables SPANNER_SYS.QUERY_STATS_TOP_*, dont la valeur maximale pendant 30 jours. Voir Conservation des données pour en savoir plus.

Rôles requis

Vous avez besoin de différents rôles et autorisations IAM selon que vous êtes un utilisateur IAM ou un utilisateur du contrôle des accès ultraprécis.

Utilisateur IAM (Identity and Access Management)

Pour obtenir les autorisations nécessaires pour afficher la page "Insights sur les requêtes", demandez à votre administrateur de vous accorder le les rôles IAM suivants sur l'instance:

Vous devez disposer des autorisations suivantes du rôle Lecteur de bases de données Cloud Spanner (roles/spanner.databaseReader) pour afficher la page "Insights sur les requêtes" :

  • spanner.databases.beginReadOnlyTransaction
  • spanner.databases.select
  • spanner.sessions.create

Utilisateur pour le contrôle ultraprécis des accès

Si vous êtes un utilisateur du contrôle des accès ultraprécis, assurez-vous de respecter les points suivants:

  • Vous disposez du lecteur Cloud Spanner(roles/spanner.viewer).
  • Ils disposent de droits de contrôle des accès précis et disposent du spanner_sys_reader. rôle système ou de l'un de ses rôles de membre.
  • Sélectionnez spanner_sys_reader ou un rôle de membre comme rôle système actuel sur la page de présentation de la base de données.

Pour en savoir plus, consultez les pages À propos du contrôle ultraprécis des accès et Rôles système de contrôle des accès ultraprécis

Le tableau de bord "Insights sur les requêtes"

Le tableau de bord "Insights sur les requêtes" indique la charge de la requête en fonction du la base de données et la période sélectionnées. Le chargement des requêtes est une mesure du total Utilisation du processeur pour toutes les requêtes de l'instance au cours de la période sélectionnée. Le tableau de bord fournit une série de filtres qui vous aident à visualiser le chargement des requêtes.

Pour afficher le tableau de bord "Insights sur les requêtes" pour une base de données, procédez comme suit:

  1. Sélectionnez Insights sur les requêtes dans le panneau de navigation de gauche. La Le tableau de bord des insights sur les requêtes s'ouvre.
  2. Sélectionnez une base de données dans la liste Bases de données. Le tableau de bord affiche les informations de chargement de la requête pour la base de données.

Le tableau de bord comprend les sections suivantes :

  1. Databases list (Liste de bases de données) : filtre la charge de requête sur une base de données spécifique ou toutes les bases de données.
  2. Time range filter (Filtre de période) : filtre la requête de chargement par périodes (telles que des heures, de jours ou d'une période personnalisée.
  3. Graphique "Utilisation totale du processeur (toutes les requêtes)": affiche la charge agrégée. de toutes les requêtes.
  4. Graphique de l'utilisation totale du processeur (par requête ou tag de requête): affiche le processeur. par requête ou tag de demande.
  5. Tableau des requêtes et tags TopN: affiche la liste des requêtes et requêtes les plus fréquentes et les tags, triés selon l'utilisation du processeur. Voir Identifiez une requête ou une balise potentiellement problématique.

Tableau de bord des insights sur les requêtes

Performances du tableau de bord

utiliser des paramètres de requête ; ajouter des tags à vos requêtes pour optimiser les performances des insights sur les requêtes. Si vous ne définissez pas de paramètres ou ajouter des tags à vos requêtes, un trop grand nombre de résultats peut être renvoyé, ce qui peut entraîner le tableau des requêtes et des tags TopN ne se charge pas correctement.

Vérifier si des requêtes inefficaces entraînent une utilisation élevée du processeur

L'utilisation totale du processeur est une mesure du travail (en secondes CPU) que le les requêtes exécutées dans la base de données sélectionnée au fil du temps.

Utilisation totale du processeur pour toutes les requêtes

Examinez le graphique pour examiner les questions suivantes:

  • Quelle base de données subit la charge ? Sélectionner des bases de données différentes la liste Bases de données pour trouver les bases de données ayant les charges les plus élevées. Pour savoir quelle base de données présente la charge la plus élevée, vous pouvez également consulter la Graphique Utilisation du processeur – Total pour les bases de données dans Console Google Cloud :

    Charge de la base de données

  • L'utilisation du processeur est-elle élevée ? Le graphique a-t-il connu un pic ou augmenté au fil du temps ? Si vous n'observez pas une utilisation élevée du processeur, ne concerne pas vos requêtes.

  • Depuis combien de temps l'utilisation du processeur est-elle élevée ? A-t-il augmenté récemment ou a-t-il augmenté est-il constamment élevé depuis un certain temps ? Utilisez le sélecteur de plage pour sélectionner différentes périodes afin de déterminer la durée du problème. Faites un zoom avant pour afficher et la période pendant laquelle les pics de charge des requêtes sont observés. Effectuez un zoom arrière pour afficher jusqu'à une semaine de la chronologie.

Si vous observez un pic ou une élévation sur le graphique correspondant à l'ensemble de l'instance de l'utilisation du processeur, elle est très probablement due à une ou plusieurs requêtes coûteuses. Ensuite, vous vous pouvez explorer plus en détail en identifiant une requête ou un tag de demande potentiellement problématique.

Identifier une requête ou un tag de demande potentiellement problématique

Pour identifier une requête ou un tag de demande potentiellement problématique, reportez-vous à la section consacrée aux requêtes TopN:

Requêtes TopN

Nous voyons ici que la requête avec FPRINT 6815864236081503267 utilise beaucoup le processeur et peut poser problème.

Le tableau Requêtes TopN fournit un aperçu des requêtes qui utilisent les le plus d'utilisation CPU pendant la fenêtre temporelle choisie, triés par ordre décroissant. Le nombre des requêtes TopN sont limitées à 100.

Pour les graphiques, nous extrayons les données du tableau de statistiques des requêtes TopN, qui comporte trois niveaux de précision: 1 min, 10 min et 1 heure. La valeur de chaque point de données dans les graphiques représente la valeur moyenne sur un intervalle d'une minute.

Nous vous recommandons d'ajouter des balises à vos requêtes SQL. Le taggage des requêtes vous aide à détecter les problèmes à des constructions de niveau supérieur, comme dans la logique métier ou un microservice.

Table des requêtes TopN

Le tableau affiche les propriétés suivantes :

  • FPRINT: hachage de la balise de requête, le cas échéant. Sinon, le hachage requête.
  • Requête ou tag de requête: si un tag est associé à la requête, le paramètre Le tag de requête est affiché. Statistiques concernant plusieurs requêtes portant le même tag chaîne sont regroupés sur une seule ligne, la valeur REQUEST_TAG correspondant à la . Pour en savoir plus sur l'utilisation des tags de requête, consultez Dépannage à l'aide des tags de demande et des tags de transaction

    Si la requête n'est associée à aucun tag, la requête SQL est tronquée afin de est d'environ 64 Ko. Pour les instructions LMD par lot, les instructions SQL sont aplaties en une ligne unique et concaténées à l'aide d'un délimiteur de point-virgule. Consécutif les textes SQL identiques sont dédupliqués avant d'être tronqués.

  • Type de requête: indique si une requête est de type PARTITIONED_QUERY ou QUERY. Un PARTITIONED_QUERY est une requête avec un partitionToken obtenu à partir de API PartitionQuery : Toutes les autres requêtes et instructions LMD sont désignées par le type de requête QUERY.

  • Utilisation du processeur: consommation des ressources du processeur par une requête, exprimée en pourcentage du les ressources CPU totales utilisées par toutes les requêtes exécutées sur les bases de données dans cet intervalle de temps, indiqué sur une barre horizontale comprise entre 0 et 100.

  • Processeur (%): consommation des ressources du processeur par une requête, exprimée en pourcentage du ressources CPU totales utilisées par toutes les requêtes exécutées sur les bases de données dans ce l'intervalle de temps.

  • Nombre d'exécutions: nombre de fois où Spanner a vu la requête pendant l'intervalle.

  • Latence moyenne (ms): durée moyenne, en microsecondes, pour chaque requête. dans la base de données. Cette moyenne exclut l'encodage et le temps de transmission de l’ensemble de résultats ainsi que la surcharge.

  • Nombre moyen de lignes analysées: nombre moyen de lignes analysées par la requête, à l'exception des les valeurs supprimées.

  • Nombre moyen de lignes renvoyées: nombre moyen de lignes renvoyées par la requête.

  • Octets renvoyés: nombre d'octets de données renvoyés par la requête, à l'exception des et d'encodage de transmission.

Écart possible entre les graphiques

Vous remarquerez peut-être une divergence entre les valeurs Total CPU Utilization (Toutes les requêtes) et le graphique Utilisation totale du processeur (par requête ou tag de requête). Il y deux choses pourraient entraîner ce scénario:

  • Différentes sources de données: les données Cloud Monitoring, qui alimentent les le graphique d'utilisation totale du CPU (toutes les requêtes) est généralement plus précis, car il est envoyé chaque minute et a une durée de conservation de 45 jours. De l'autre les données de la table système, qui alimentent l'utilisation totale du processeur (par requête ou tag de demande), la moyenne peut être calculée sur 10 minutes (ou 1 heure), auquel cas. nous pouvons perdre les données de haute précision que nous voyons dans l'utilisation totale du processeur (toutes les requêtes).

  • Différentes fenêtres d'agrégation: les deux graphiques ont des agrégations différentes Windows. Par exemple, si vous inspectez un événement de plus de six heures, interroger la table SPANNER_SYS.QUERY_STATS_TOTAL_10MINUTE. Dans ce cas, les événements qui se produisent à 10h01 sont agrégés sur une durée de 10 minutes et sont sont présentes dans la table système correspondant à l'horodatage 10:10.

La capture d'écran suivante en montre un exemple.

Variance entre les graphiques

Analyser une requête ou un tag de requête spécifique

Pour déterminer si une requête ou un tag de requête est à l'origine du problème, cliquez sur la requête ou le tag de requête qui semblent présenter la charge la plus élevée ou prendre plus de temps que les autres. Vous pouvez sélectionner plusieurs requêtes demander des tags à la fois.

Vous pouvez maintenir le pointeur de la souris sur le graphique pour afficher les requêtes de la chronologie leur utilisation du processeur (en secondes).

Essayez de préciser le problème en examinant les éléments suivants :

  • Depuis combien de temps la charge est-elle élevée ? Est-elle élevée uniquement maintenant ? Ou est-elle élevée depuis longtemps ? Modifiez les périodes afin de trouver la date et l'heure auxquelles les performances de la requête ont commencé à être médiocres.
  • Y a-t-il eu des pics d'utilisation du processeur ? Vous pouvez modifier la période d'étudier l'historique d'utilisation du CPU pour la requête.
  • Quelle est la consommation des ressources ? Quel est son rapport avec d'autres requêtes ? Examinez le tableau et comparez les données d'autres requêtes avec celles de la requête sélectionnée. Y a-t-il une différence majeure ?

Pour vérifier que la requête sélectionnée contribue à l'utilisation élevée du processeur, vous pouvez afficher le détail d'une forme de requête spécifique (ou d'un tag de demande) puis les analyser plus en détail sur la page "Détails de la requête".

Afficher la page "Détails de la requête"

Pour afficher les détails d'une forme de requête ou d'un tag de requête spécifiques sous forme graphique, cliquez sur FPRINT associé à la requête ou au tag de demande. La page "Détails de la requête" s'ouvre.

Page "Détails de la requête"

La page "Détails de la requête" affiche les informations suivantes:

  1. Texte des détails de la requête: texte de la requête SQL, tronqué à environ 64 Ko. Les statistiques de plusieurs requêtes comportant la même chaîne de tag sont regroupées par une seule ligne avec la REQUEST_TAG correspondant à cette chaîne de tag. Seul le texte de l'une de ces requêtes s'affiche dans ce champ. Pour le LMD par lot, l'ensemble des requêtes SQL instructions sont aplaties en une seule ligne, concaténées à l'aide d'un point-virgule délimiteur. Les textes SQL identiques consécutifs sont dédupliqués avant tronquer.
  2. Les valeurs des champs suivants: <ph type="x-smartling-placeholder">
      </ph>
    • Nombre d'exécutions: nombre de fois où Spanner a vu la requête pendant l'intervalle.
    • Pos. CPU (ms): consommation moyenne des ressources du processeur, en millisecondes, des ressources de processeur de l'instance dans un intervalle de temps.
    • Pos. Latence (ms): durée moyenne, en millisecondes, pour chaque l'exécution des requêtes dans la base de données. Cette moyenne exclut l'encodage et le temps de transmission de l’ensemble de résultats et de la surcharge.
    • Pos. lignes renvoyées: nombre moyen de lignes renvoyées par la requête.
    • Pos. lignes analysées: nombre moyen de lignes analysées par la requête en excluant les valeurs supprimées.
    • Pos. octets: nombre d'octets de données renvoyés par la requête, à l'exception des et d'encodage de transmission.
  3. Graphique d'exemples de plans de requête: chaque point du graphique représente un champ d'application plan de requête à un moment précis et sa latence de requête spécifique. Cliquez sur l'une des les points du graphique afin d'afficher le plan de requête et les étapes effectuées ; pendant l'exécution de la requête. Remarque: Les plans de requête ne sont pas compatibles avec les requêtes comportant partitionTokens obtenues à partir de l'API PartitionQuery Requêtes en LMD partitionné
  4. Outil de visualisation du plan de requête: affiche le plan de requête échantillonné sélectionné. Chaque nœud, ou une fiche, sur le graphique représente un itérateur qui utilise les lignes de son et génère des lignes pour son parent. Vous pouvez cliquer sur chaque itérateur des informations détaillées.
  5. Graphique de latence des requêtes: indique la valeur de la latence des requêtes pour un élément sélectionné. requête sur une période donnée. Elle indique également la latence moyenne.
  6. Graphique d'utilisation du processeur: indique l'utilisation du processeur par une requête. en pourcentage, sur une période donnée. Il indique également l'utilisation moyenne du processeur.
  7. Graphique "Nombre d'exécutions/Échecs": indique le nombre d'exécutions d'un requête sur une période donnée et le nombre d'échecs de son exécution.
  8. Graphique des lignes analysées: indique le nombre de lignes qui la requête analysée sur une période donnée.
  9. Graphique des lignes renvoyées: indique le nombre de lignes qui la requête renvoyée sur une période donnée.
  10. Filtre de période: filtre les détails de la requête par période (heure, un jour ou une plage personnalisée.

Pour les graphiques, nous récupérons les données du tableau de statistiques des requêtes TopN, qui a trois niveaux de précision différents: 1 min, 10 min et 1 heure. La valeur de chaque le point de données dans les graphiques représente la valeur moyenne sur un intervalle de un minute.