Analyser les performances des requêtes

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

Présentation des insights sur les requêtes

Les insights sur les requêtes vous aident à détecter et à diagnostiquer Instruction LMD (INSERT, UPDATE et DELETE) les problèmes de performances d'une base de données Spanner. Compatible une surveillance intuitive et fournit des informations de diagnostic qui vous aident au-delà de la détection pour identifier la cause racine des problèmes de performances.

Insights sur les requêtes vous aide à améliorer les performances des requêtes Spanner en suivant les étapes ci-dessous :

  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 requête 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 de l'outil Insights sur les requêtes n'entraîne aucun coût supplémentaire.

Conservation des données

La durée de conservation maximale 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 extraites des tables SPANNER_SYS.QUERY_STATS_TOP_*, dont la durée de conservation maximale est de 30 jours. Voir Conservation des données pour en savoir plus.

Rôles requis

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

Utilisateur Identity and Access Management (IAM)

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:

Les autorisations suivantes Lecteur de bases de données Cloud Spanner(roles/spanner.databaseReader) sont requis pour afficher la page "Insights sur les requêtes" :

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

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

Si vous utilisez le contrôle précis des accès, assurez-vous de :

  • disposer du lecteur Cloud Spanner (roles/spanner.viewer) ;
  • disposent de droits de contrôle des accès ultraprécis et se voient attribuer le rôle système spanner_sys_reader ou 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 "Vue d'ensemble de la base de données".

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

Tableau de bord d'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 Utilisation totale du processeur pour toutes les requêtes de l'instance sur la période sélectionnée la plage d'adresses IP. Le tableau de bord fournit une série de filtres qui vous aident à afficher la charge 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. Le tableau de bord d'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 sur la charge de requêtes 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. Filtre de période : permet de filtrer la charge des requêtes par période, par exemple par heure, par jour ou selon une plage 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 "Utilisation totale du processeur (par requête ou tag de requête)" : affiche l'utilisation du processeur par requête ou tag de requête.
  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 d'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 paramétrez pas ni ne taguez pas vos requêtes, vous risquez de renvoyer trop de résultats, ce qui peut entraîner un chargement incorrect de la table des requêtes et des tags TopN.

Vérifier si des requêtes inefficaces sont responsables d'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électionnez différentes bases de données dans la liste "Bases de données" pour trouver celles avec les charges les plus élevées. Pour identifier la base de données qui présente la charge la plus élevée, vous pouvez également consulter le graphique Utilisation du processeur (total) pour les bases de données dans la 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, le problème ne vient pas de 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 sur différentes périodes afin de savoir combien de temps le problème a duré. Zoom avant sur afficher une fenêtre temporelle pendant laquelle les pics de charge des requêtes sont observés ; Zoom arrière sur afficher jusqu'à une semaine de la chronologie.

Si vous constatez un pic ou une augmentation dans le graphique correspondant à l'utilisation globale du processeur de l'instance, cela est probablement dû à une ou plusieurs requêtes coûteuses. Vous pouvez ensuite approfondir le processus de débogage en identifiant une requête ou une balise de requête potentiellement problématique.

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

Pour identifier une requête ou un tag de demande potentiellement problématique, examinez le TopN. "Requêtes" :

Requêtes TopN

Nous voyons ici que la requête avec FPRINT 6815864236081503267 a une capacité de calcul élevée et peut être problématique.

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 de requêtes TopN est limité à 100.

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 point de données des graphiques représente la valeur moyenne sur un intervalle d'une minute.

Nous vous recommandons d'ajouter des tags à vos requêtes SQL. L'ajout de tags aux requêtes vous aide à détecter les problèmes liés à des constructions de niveau supérieur, tels que 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, hachage de la 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é. Les statistiques de plusieurs requêtes ayant la même chaîne de tag sont regroupées sur une seule ligne, avec la valeur REQUEST_TAG correspondant à la chaîne de tag. 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 à est d'environ 64 Ko. Pour le traitement LMD par lots, les instructions SQL sont aplaties sur une seule ligne 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 signalées par la requête QUERY de mots clés.

  • Utilisation du processeur : consommation de ressources de processeur par une requête, exprimée en pourcentage du total des ressources de processeur utilisées par toutes les requêtes exécutées sur les bases de données au cours de cet intervalle de temps, affichée sur une barre horizontale allant de 0 à 100.

  • CPU (%) : consommation de ressources de processeur par une requête, exprimée en pourcentage du total des ressources de processeur utilisées par toutes les requêtes exécutées sur les bases de données au cours de cet 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, de chaque exécution de la 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.

  • Lignes analysées en moyenne : nombre moyen de lignes analysées par la requête, à l'exclusion des valeurs supprimées.

  • Lignes renvoyées en moyenne : 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'exclusion de la surcharge liée à l'encodage de la transmission.

Différences possibles entre les graphiques

Vous constaterez peut-être des écarts Graphique Utilisation totale du processeur (toutes les requêtes) et Graphique Utilisation totale du processeur (par requête ou tag de requête). Il y a deux choses à l'origine de ce scénario:

  • Différentes sources de données : les données de surveillance dans le cloud, qui alimentent le graphique "Utilisation totale du processeur (toutes les requêtes)", sont généralement plus précises, car elles sont transmises toutes les minutes et ont une durée de conservation de 45 jours. D'autre part, les données de la table système, qui alimentent le graphique "Utilisation totale du processeur (par requête ou tag de requête)", peuvent être calculées sur une moyenne de 10 minutes (ou 1 heure). Dans ce cas, nous pouvons perdre des données à haute granularité que nous voyons dans le graphique "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 la cause du problème, cliquez sur la requête ou le tag de requête qui semble avoir la charge la plus élevée ou qui prend plus de temps que les autres. Vous pouvez sélectionner plusieurs requêtes et demander des tags à la fois.

Vous pouvez maintenir le pointeur de la souris sur le graphique des requêtes sur la chronologie pour connaître 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 pour trouver la date et l'heure auxquelles la requête a commencé à s'exécuter de manière inefficace.
  • 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 le rapport avec les autres requêtes ? Examinez le tableau et comparez les données d'autres requêtes avec celles de la requête sélectionnée. Existe-t-il une différence majeure ?

Pour confirmer que la requête sélectionnée contribue à l'utilisation élevée du processeur, vous pouvez examiner les détails de la forme de requête (ou de la balise de requête) spécifique et l'analyser plus en détail sur la page "Détails de la requête".

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

Afficher les détails d'une forme de requête ou d'un tag de requête spécifiques dans un graphique cliquez sur la FPRINT associé à la requête ou au tag de requête. 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 ayant la même chaîne de tag sont regroupées sur une seule ligne avec le 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 d'être tronqués.
  2. Les valeurs des champs suivants :
    • Nombre d'exécutions : nombre de fois où Spanner a vu la requête au cours de 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.
    • Latence moyenne (ms) : durée moyenne, en millisecondes, de chaque exécution de la requête 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.
    • Lignes analysées en moyenne : nombre moyen de lignes analysées par la requête, à l'exclusion des valeurs supprimées.
    • Octets moyens : nombre d'octets de données renvoyés par la requête, à l'exclusion de la surcharge liée à l'encodage de la 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 affiche également l'utilisation moyenne du processeur.
  7. Nombre d'exécutions/Graphique des échecs : indique le nombre d'exécutions d'une requête sur une période donnée et le nombre de fois où l'exécution de la requête a échoué.
  8. Graphique des lignes analysées : indique le nombre de lignes analysées par la requête 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 : permet de filtrer les détails des requêtes par période, par exemple par heure, par jour ou par 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.

Rechercher toutes les exécutions d'une requête dans le journal d'audit

Pour rechercher toutes les exécutions d'une empreinte de requête particulière dans Cloud Audit Logs, interroger le journal d'audit et rechercher query_fingerprint correspondant au champ FPRINT dans les statistiques de la requête TopN tableau. Pour en savoir plus, consultez la section Présentation des requêtes et de l'affichage des journaux. Utilisez cette méthode pour identifier l'utilisateur à l'origine de la requête.