Analyse des arborescences de verrous pour Amazon Aurora PostgreSQL avec CloudWatch Database Insights - Amazon CloudWatch

Analyse des arborescences de verrous pour Amazon Aurora PostgreSQL avec CloudWatch Database Insights

Pour résoudre les problèmes de performances causés par les verrous, vous pouvez analyser les arborescences de verrous pour les bases de données Amazon Aurora PostgreSQL avec CloudWatch Database Insights en utilisant les éléments suivants.

  • Menu déroulant Tranché par : sélectionnez les dimensions Objet bloquant, Session bloquante ou SQL bloquant dans le graphique Charge de base de données pour voir comment les principaux bloqueurs distincts contribuent à la charge de base de données au fil du temps. Grâce au graphique de charge de base de données, vous pouvez analyser si les principaux bloqueurs sont constants ou changent souvent. Vous pouvez ensuite résoudre les problèmes liés aux bloqueurs.

    Tableau SQL fréquemment utilisé avec la session de blocage sélectionnée dans le menu déroulant Tranché par
  • Onglet Analyse des verrous : sélectionnez Analyse de la charge de base de données, puis l’onglet Analyse des verrous pour afficher les informations relatives aux conflits de verrous dans votre base de données.

    Tableau Arbres de verrous dans le tableau de bord de charge de base de données
Note

CloudWatch Database Insights prend en charge l’analyse des verrous pour toutes les versions d’Aurora PostgreSQL. Pour analyser les arbres de verrous, vous devez activer le mode avancé de Database Insights. Pour plus d’informations sur l’activation du mode avancé, consultez Activation du mode avancé de Database Insights pour Amazon Aurora et Activation du mode avancé de Database Insights pour Amazon Relational Database Service

L’onglet Analyse des verrous fournit des informations sur les conflits de verrous dans votre base de données. La visualisation de l’arborescence des verrous montre les relations et les dépendances entre les demandes de verrous provenant de différentes sessions.

Database Insights capture des instantanés toutes les 15 secondes. Les instantanés affichent les données de verrouillage de votre base de données à un moment donné.

Note

Lorsque CloudWatch détecte un verrouillage élevé, il affiche la bannière Verrouillage élevé détecté dans l’onglet Analyse des verrous. CloudWatch détecte un verrouillage élevé s’il prend un instantané de verrouillage toutes les 15 secondes pendant 15 minutes consécutives.

Chaque nœud de l’arborescence représente une session spécifique. Le nœud parent est une session qui bloque ses nœuds enfants.

Pour analyser les arborescences de verrouillage, procédez comme suit.

Pour analyser les arborescences de verrouillage
  1. Connectez-vous à AWS Management Console et ouvrez la console CloudWatch à l’adresse https://console.aws.amazon.com/cloudwatch/.

  2. Choisissez Informations.

  3. Choisissez Database Insights.

  4. Sélectionnez la vue Instance de base de données.

  5. Choisissez une instance de base de données.

  6. Sélectionnez l’onglet Analyse de la charge de base de données.

  7. Sélectionnez l’onglet Analyse des verrous.

    Pour afficher les données de verrouillage d’une instance de base de données, sélectionnez une période d’un jour ou moins.

  8. Sélectionnez une fenêtre d’instantané. Par défaut, Database Insights sélectionne la fenêtre d’instantané comportant le plus grand nombre de sessions bloquées.

    Tableau d’analyse des verrous
  9. Pour afficher les données de verrouillage d’un instantané, sélectionnez l’heure à laquelle Database Insights a pris l’instantané.

  10. Pour développer un arbre de verrouillage, sélectionnez la flèche à côté de l’ID de session.

    Arbre de verrouillage développé

Données d’instantané de verrouillage

Database Insights fournit les informations suivantes pour chaque demande de verrouillage. Pour afficher les colonnes qui ne sont pas activées par défaut, sélectionnez l’icône Paramètres du tableau Arbres de verrouillage et activez les autres colonnes.

Nom de la colonne Définition Colonne par défaut Remarques

session_id

Identifiant de session unique.

Oui

Le session_id est dérivé de HEX(pg_stat_activity.backend_start).HEX(pg_locks.pid).

pid

PID de ce dorsal.

Oui

pg_locks.pid

blocked_sessions_count

Le nombre de sessions bloquées par ce verrou.

Oui

Le blocked_sessions_count est dérivé du nombre d’ID de session bloquées par ce verrou.

last_query_executed

La dernière requête exécutée par cette session. Pour les bloqueurs, il peut ne pas s’agir de la requête qui détient le verrou de blocage.

Oui

pg_stat_activity.query

wait_event

Le nom de l’événement d’attente si le dorsal est actuellement en attente, sinon la valeur est NULL.

Oui

pg_stat_activity.wait_event

blocking_time_(In Seconds)

Le temps (en secondes) écoulé depuis le début de ce verrou.

Oui

Le blocking_time_(In Seconds) est dérivé de l’heure de début de la transaction en attente (pg_locks.waitstart) pour le premier utilisateur en attente.

blocking_mode

Le mode de verrouillage détenu par la session de blocage.

Non

pg_locks.mode

waiting_mode

Le mode de verrouillage demandé par la session en attente.

Non

pg_locks.mode

application

Le nom de l’application connectée à ce dorsal.

Non

pg_stat_activity.application_name

blocking_txn_start_time

L’heure de début de la transaction de blocage ou null si aucune transaction n’est active.

Non

pg_stat_activity.xact_start

waiting_start_time

L’heure à laquelle une session utilisateur en attente a commencé à attendre ce verrou, ou null si le verrou est détenu.

Non

pg_locks.waitstart

session_start_time

L’heure à laquelle une session utilisateur a été démarrée.

Non

pg_stat_activity.backend_start

state

L’état d’un dorsal.

Non

pg_stat_activity.state

wait_event_type

Le type d’événement d’attente pour lequel cette session est en attente.

Non

pg_stat_activity.wait_event_type

last_query_exec_time

L’heure à laquelle la dernière requête a été démarrée.

Non

pg_stat_activity.query_start

user

Le nom de l’utilisateur connecté à ce dorsal.

Non

pg_stat_activity.usename

host

Le nom d’hôte du client connecté, tel que rapporté par une recherche DNS inverse de client_addr. Ce champ ne sera non nul que pour les connexions IP, et uniquement lorsque log_hostname est activé.

Non

pg_stat_activity.client_hostname

port

Le numéro de port TCP utilisé par le client pour communiquer avec ce dorsal, ou -1 si une socket Unix est utilisée. Si ce champ est nul, cela indique qu’il s’agit d’un processus serveur interne.

Non

pg_stat_activity.client_port

client_address

L’adresse IP du client connecté à ce dorsal. Si ce champ est nul, cela indique soit que le client est connecté via une socket Unix sur l’ordinateur serveur, soit qu’il s’agit d’un processus interne tel que autovacuum.

Non

pg_stat_activity.client_addr

granted

La valeur est vraie si le verrou est maintenu et fausse si le verrou est en attente.

Non

pg_locks.granted

waiting_tuple

Le numéro de tuple ciblé par le verrou dans la page, ou null si la cible n’est pas un tuple.

Non

pg_locks.tuple

waiting_page

Le numéro de page ciblé par le verrou dans la relation, ou null si la cible n’est pas une page de relation ou un tuple.

Non

pg_locks.page

waiting_transaction_id

L’ID de la transaction ciblée par le verrou, ou null si la cible n’est pas un ID de transaction.

Non

pg_locks.transactionid

waiting_relation

L’OID de la relation ciblée par le verrou, ou null si la cible n’est pas une relation ou une partie d’une relation.

Non

pg_locks.relation

waiting_object_id

L’OID de la cible du verrou dans son catalogue système, ou null si la cible n’est pas un objet de base de données général.

Non

pg_locks.objid

waiting_database_id

L’OID de la base de données dans laquelle la cible du verrou existe, ou zéro si la cible est un objet partagé, ou null si la cible est un ID de transaction.

Non

pg_locks.database

waiting_database_name

Le nom de la base de données dans laquelle la cible du verrou existe.

Non

pg_stat_activity.datname

waiting_locktype

Le type de l’objet verrouillable : relation, extension, frozenid, page, tuple, transactionid, virtualxid, spectoken, object, userlock, advisory ou applytransaction.

Non

pg_locks.locktype

is_fastpath

La valeur est vraie si le verrou a été pris avec le chemin rapide et fausse s’il a été pris à partir de la table de verrouillage principale.

Non

pg_locks.fastpath

Pour plus d’informations sur les valeurs des vues pg_stat_activity et pg_locks, consultez les rubriques suivantes dans la documentation PostgreSQL.