Identifier les transactions susceptibles de provoquer des latences élevées

Cette page explique comment utiliser les insights sur les verrous et les insights sur les transactions pour identifier les transactions qui entraînent des latences élevées.

Présentation

Pour garantir la cohérence de plusieurs transactions simultanées, Spanner utilise des verrous pour contrôler l'accès aux données. Un conflit de verrouillage se produit lorsque de nombreuses transactions nécessitent un accès fréquent au même verrou, ce qui entraîne des latences élevées. Sans interface visuelle, il peut être fastidieux d'identifier les transactions problématiques qui entraînent un nombre élevé de problèmes de conflit de verrouillage.

Les opérations Spanner acquièrent des verrous lorsqu'elles font partie de une transaction en lecture/écriture. Les transactions en lecture seule n'acquièrent pas de verrous.

Spanner vous aide à identifier les transactions qui entraînent des latences élevées en vous guidant à travers les étapes suivantes :

  1. Vérifiez si les latences ont augmenté à l'aide de Spanner Monitoring.
  2. Vérifiez les problèmes de conflit de verrouillage à l'aide des insights sur les verrous.
  3. Identifiez les transactions problématiques à l'aide des insights sur les transactions.

Tarifs

L'utilisation des insights sur les verrous ou des insights sur les transactions n'entraîne aucun coût supplémentaire.

Configurations régionales

Les insights sur les verrous et les insights sur les transactions sont disponibles dans les configurations régionales et multirégionales.

Conservation des données

La durée maximale de conservation des données affichées dans les tableaux de bord des insights sur les verrous et des insights sur les transactions est de 30 jours. Pour les graphiques, les données sont récupérées à partir des tables SPANNER_SYS.*, dont la période de conservation maximale est de 30 jours.

Pour en savoir plus sur ces tables et la conservation des données, consultez Statistiques de verrous et Statistiques de transactions.

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 du contrôle des accès ultraprécis.

Utilisateur Identity and Access Management (IAM)

Pour obtenir les autorisations nécessaires pour afficher la page des insights sur les verrous et les transactions, demandez à votre administrateur de vous accorder les rôles IAM suivants sur l'instance :

Les autorisations suivantes du rôle Lecteur de bases de données Cloud Spanner (roles/spanner.databaseReader) sont requises pour afficher la page des insights sur les verrous et les transactions :

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

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

Si vous utilisez le contrôle des accès ultraprécis, assurez-vous des points suivants :

  • Vous disposez du rôle Cloud Spanner Lecteur(roles/spanner.viewer)
      .
    • Vous ne disposez que de privilèges de contrôle des accès ultraprécis et vous avez reçu le rôle système spanner_sys_reader ou l'un de ses rôles membres.
  • Vous sélectionnez spanner_sys_reader ou un rôle membre comme rôle système actuel sur la page de présentation de la base de données.

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

Vérifier si les latences ont augmenté à l'aide de Spanner Monitoring

Vous pouvez utiliser Cloud Monitoring pour définir des alertes pour les métriques qui dépassent les seuils spécifiés pour toutes les requêtes.

Si vous recevez une alerte indiquant une augmentation des latences pour une instance, vous pouvez la confirmer dans le tableau de bord Spanner Monitoring, qui affiche des graphiques pour diverses métriques importantes. Le graphique Latence vous permet d'afficher les latences élevées aux 50e et 99e centiles.

Pour confirmer une augmentation des latences d'écriture au 99e centile, procédez comme suit :

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

    Accéder aux instances Spanner

  2. Cliquez sur le nom de l'instance.

    La Google Cloud console affiche une présentation de l'instance.

  3. Cliquez sur Monitoring dans le menu de navigation.

    La Google Cloud console affiche des graphiques de données pour l'instance.

  4. Dans le graphique Latence, définissez Fonction sur Write et Centile sur 99th.

  5. Vérifiez le graphique actualisé pour voir s'il affiche des pics.

Graphique montrant les latences d'écriture au 99e centile

Si vous constatez que l'utilisation du processeur n'augmente pas et que les erreurs augmentent dans les opérations par seconde, il est probable que les pics de latence soient dus aux conflits de verrouillage.

Vérifier les problèmes de conflit de verrouillage à l'aide des insights sur les verrous

Le tableau de bord des insights sur les verrous vous permet d'afficher le temps d'attente de verrouillage dans une instance ou une base de données sélectionnée. Il peut vous aider à confirmer si les latences élevées sont dues à des conflits de verrouillage.

Vérifier si le temps d'attente de verrouillage est élevé

Pour vérifier si le temps d'attente de verrouillage est élevé, procédez comme suit :

  1. Cliquez sur Insights sur les verrous dans le menu de navigation.

    La Google Cloud console affiche le graphique Temps d'attente total pour le verrouillage, qui indique le temps d'attente de verrouillage pour chaque base de données de l'instance.

    Les données affichées concernent 1 hour par défaut, comme indiqué dans le sélecteur de période en haut à droite du tableau de bord des insights sur les verrous. Pour afficher les données sur une période plus longue, sélectionnez une autre option, par exemple 1 day.

    Pour en savoir plus, consultez Utiliser des graphiques.

  2. Dans le sélecteur Bases de données en haut, sélectionnez la base de données qui affiche le temps d'attente de verrouillage le plus élevé.

    Le graphique Temps d'attente total pour le verrouillage s'actualise pour n'afficher les données que pour la base de données sélectionnée.

    De plus, un autre graphique, Temps d'attente pour le verrouillage par plage de lignes, affiche des graphiques pour le temps d'attente de verrouillage par plage de lignes.

  3. Cliquez sur le graphique et faites-le glisser horizontalement pour agrandir l'heure où un pic de latence est visible.

Tableau de bord "Informations de verrouillage"

Analyser les données d'attente de verrouillage

Le tableau Insights sur les verrous affiche les colonnes suivantes des SPANNER_SYS.LOCK_STATS tables système :

  • Clé de début de plage de lignes : clé de ligne où le conflit de verrouillage a eu lieu. Lorsque le conflit implique une plage de lignes, la valeur représente la clé de début de la plage. Le signe plus (+) correspond à une plage.
  • Attente de verrouillage : temps d'attente total pour le verrouillage représenté visuellement sur une barre horizontale. Par défaut, le tableau utilise cette colonne pour les tris et affiche la clé de début de plage de lignes avec le temps d'attente de verrouillage le plus élevé en haut.
  • Attente de verrouillage (secondes) : temps d'attente de verrouillage cumulé des conflits de verrouillage enregistrés pour toutes les colonnes de la plage de clés de ligne, en secondes.
  • Attente de verrouillage (%) : temps d'attente des conflits de verrouillage enregistrés pour toutes les colonnes de la plage de clés de ligne, en pourcentage du temps d'attente total pour le verrouillage pour toutes les plages de clés de ligne de la base de données.

Pour corréler les données du graphique Temps d'attente pour le verrouillage par plage de lignes avec les données du tableau, sélectionnez une ligne. La ligne associée apparaît en surbrillance. Inversement, cochez la case d'une ligne du tableau pour afficher la ligne associée dans le graphique.

Table "Informations de verrouillage"

Pour filtrer les données du tableau, procédez comme suit :

  1. Cliquez dans le champ à côté de Filtrer.

  2. Sélectionnez une propriété, un opérateur et spécifiez une valeur.

Le tableau affiche les données correspondant au filtre.

Afficher des exemples de demandes de verrouillage

Le panneau Exemples de demandes de verrouillage affiche des informations sur des exemples de demandes de verrouillage provenant de transactions en conflit.

Pour afficher des exemples d'informations sur les demandes de verrouillage pour une clé de début de plage de lignes, cliquez sur le lien associé dans le tableau.

Le tableau affiche les colonnes d'informations suivantes :

  • Exemple de nom de colonne : colonne qui a rencontré le conflit de verrouillage sur la plage de clés de ligne.
  • Mode de verrouillage : mode de verrouillage demandé.
  • Afficher les transactions : lien vers la page Insights sur les transactions, qui affiche les transactions susceptibles d'être en conflit pour les verrous.

Page "Informations de verrouillage"

Identifier les transactions en conflit à l'aide des insights sur les transactions

Le tableau de bord des insights sur les transactions vous permet d'afficher la latence des transactions dans une instance ou une base de données sélectionnée. Il peut vous aider à identifier les transactions susceptibles d'entraîner des latences élevées en raison de conflits de verrouillage.

Afficher les latences des transactions

Pour afficher la latence des transactions, procédez comme suit :

  1. Cliquez sur Insights sur les transactions dans le menu de navigation de gauche.

  2. Dans le sélecteur Bases de données en haut, sélectionnez la base de données qui affiche le temps d'attente de verrouillage le plus élevé.

    Vous pouvez également, dans le tableau de bord des insights sur les verrous, cliquer sur Afficher les transactions pour filtrer les transactions en lecture ou en écriture dans une colonne d'exemple spécifique.

    Les données affichées concernent 1 hour par défaut, comme indiqué dans le sélecteur de période en haut à droite du tableau de bord des insights sur les transactions.

Le tableau de bord affiche les graphiques suivants :

  • Le graphique Latence moyenne (toutes les transactions) affiche la latence de toutes les transactions de l'instance.

  • Le graphique Latence moyenne (par transaction) affiche la latence de chaque transaction pour la base de données sélectionnée.

Tableau de bord "Insights sur les transactions"

Analyser les données de transaction

Vous pouvez afficher et analyser les données de chaque transaction dans le tableau situé sous les graphiques. Le tableau affiche les données de métriques des SPANNER_SYS.TXN_STATS tables système dans les colonnes suivantes :

  • Empreinte : hachage du tag de la transaction, s'il existe. Dans le cas contraire, le hachage est calculé en fonction des opérations associées à la transaction. La valeur est un lien qui mène à la page "Détails de la transaction".
  • Tag de la transaction : tag de transaction facultatif pour la transaction. Les données statistiques de plusieurs transactions ayant la même chaîne de tag sont regroupées sur une seule ligne avec le libellé TRANSACTION_TAG correspondant à la chaîne de tag.
  • Tables concernées : tables concernées par la transaction.
  • Table.colonne lue : colonnes à partir desquelles la transaction a effectué une lecture.
  • Table.colonne écrite : colonnes dans lesquelles la transaction a écrit.
  • Latence moyenne (secondes) : nombre moyen de secondes nécessaires pour effectuer la transaction. Par défaut, le tableau est trié par cette colonne dans l'ordre décroissant.

Pour corréler les données du graphique Latence moyenne (par transaction) avec les données du tableau, sélectionnez une ligne dans le graphique. La ligne correspondante du tableau apparaît en surbrillance.

Pour filtrer les données du tableau, procédez comme suit :

  1. Cliquez à côté de Filtrer.

  2. Sélectionnez une propriété, un opérateur et spécifiez une valeur.

Le tableau affiche les données correspondant au filtre.

Table "Insights sur les transactions"

Afficher des informations détaillées sur une transaction

Pour afficher des informations détaillées sur une transaction, par exemple celle qui présente la latence la plus élevée, cliquez sur le lien Empreinte de la ligne correspondante dans le tableau.

La page Détails de la transaction s'affiche. Outre le tableau de détails en haut, elle affiche les informations suivantes :

  • Une barre affichant les valeurs numériques de chacune de ces métriques :

    • Octets moyens : nombre moyen d'octets écrits par la transaction.
    • Latence moyenne : nombre moyen de secondes écoulées entre la première opération de la transaction et le commit ou l'abandon.
    • Latence moyenne du commit : nombre moyen de secondes nécessaires pour effectuer l'opération de commit.
    • Nombre total de tentatives : nombre total de tentatives de transaction. Ce nombre représente un taux par minute. Pour en savoir plus sur les intervalles, consultez Statistiques de transactions.
    • Nombre total d'abandons : nombre total de tentatives de transaction qui ont été abandonnées, y compris celles qui ont été abandonnées avant d'appeler la méthode de commit de la transaction. Ce nombre représente un taux par minute. Pour en savoir plus sur les intervalles, consultez Statistiques de transactions.
  • Graphiques représentant ces valeurs. Le graphique Nombre total de tentatives et d'abandons affiche le nombre ou le taux par minute de tentatives de transaction et d'abandons. Pour afficher les tentatives de transaction et les abandons par minute, la Google Cloud console interroge la table SPANNER_SYS.TXN_STATS_TOP_* qui couvre le mieux la période sélectionnée (_MINUTE, _10MINUTE ou _HOUR). La Google Cloud console divise ensuite les valeurs des colonnes ATTEMPT_COUNT et COMMIT_ABORT_COUNT de la table choisie par la durée de l'intervalle en minutes (1, 10 ou 60) pour présenter un taux par minute. Pour en savoir plus sur les intervalles, consultez Statistiques de transactions.

    De plus, le graphique Participants moyens affiche le nombre moyen de participants à chaque tentative de commit.

Page "Détails des insights sur les transactions"

Vérifiez si la forme de la transaction peut être optimisée pour réduire les latences. Envisagez d'appliquer les pratiques recommandées pour réduire les conflits de verrouillage.

Étape suivante