Analysieren von Sperrbäumen für Amazon Aurora PostgreSQL mit Database Insights CloudWatch - Amazon CloudWatch

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Analysieren von Sperrbäumen für Amazon Aurora PostgreSQL mit Database Insights CloudWatch

Um Leistungsprobleme zu beheben, die durch Sperren verursacht werden, können Sie Sperrbäume für Amazon Aurora PostgreSQL-Datenbanken mit CloudWatch Database Insights wie folgt analysieren.

  • Aufgeteilt nach Dropdown — Wählen Sie im Diagramm zum Laden der Datenbank die Dimensionen Blockierendes Objekt, Blockierende Sitzung oder Blockierung von SQL aus, um zu sehen, wie die einzelnen Top-Blocker im Laufe der Zeit zur DB-Auslastung beitragen. Mit dem DB-Lastdiagramm können Sie analysieren, ob die wichtigsten Blocker konstant sind oder sich häufig ändern. Anschließend können Sie Fehler bei den Blockern beheben.

    Die Top-SQL-Tabelle, bei der Blocking Session in der Dropdownliste Sliced by ausgewählt wurde
  • Registerkarte „Analyse sperren“ — Wählen Sie „DB-Lastanalyse“ und anschließend die Registerkarte „Analyse sperren“, um Informationen zu Sperrkonflikten in Ihrer Datenbank anzuzeigen.

    Die Tabelle Lock Trees im Dashboard zum Laden von Datenbanken
Anmerkung

CloudWatch Database Insights unterstützt die Sperranalyse für alle Aurora PostgreSQL-Versionen. Um Sperrbäume zu analysieren, muss der Database Insights Advance Mode aktiviert sein. Informationen zum Aktivieren des erweiterten Modus finden Sie unter Einschalten des erweiterten Modus von Database Insights für Amazon Aurora und Einschalten des erweiterten Modus von Database Insights für Amazon Relational Database Service

Die Registerkarte „Sperranalyse“ enthält Informationen zu Sperrkonflikten in Ihrer Datenbank. Die Sperrbaum-Visualisierung zeigt die Beziehungen und Abhängigkeiten zwischen Sperranforderungen aus verschiedenen Sitzungen.

Database Insights erfasst alle 15 Sekunden Schnappschüsse. Schnappschüsse zeigen die Sperrdaten für Ihre Datenbank zu einem bestimmten Zeitpunkt.

Anmerkung

Wenn eine hohe Sperre CloudWatch erkannt CloudWatch wird, wird das Banner Hohe Sperre erkannt auf der Registerkarte Sperranalyse angezeigt. CloudWatch erkennt eine hohe Sperre, wenn CloudWatch für jedes 15-Sekunden-Intervall für 15 aufeinanderfolgende Minuten ein Snapshot der Sperre erstellt wird.

Jeder Knoten in der Baumstruktur steht für eine bestimmte Sitzung. Der übergeordnete Knoten ist eine Sitzung, die ihre untergeordneten Knoten blockiert.

Gehen Sie wie folgt vor, um Sperrbäume zu analysieren.

Um Sperrbäume zu analysieren
  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/.

  2. Wählen Sie Insights.

  3. Wählen Sie Database Insights.

  4. Wählen Sie die Ansicht Database Instance aus.

  5. Wählen Sie eine DB-Instance aus.

  6. Wählen Sie die Registerkarte DB-Lastanalyse.

  7. Wählen Sie die Registerkarte Lock-Analyse.

    Um Sperrdaten für eine DB-Instance anzuzeigen, wählen Sie einen Zeitraum von 1 Tag oder weniger.

  8. Wählen Sie ein Snapshot-Fenster. Standardmäßig wählt Database Insights das Snapshot-Fenster mit den meisten blockierten Sitzungen aus.

    Analysetabelle sperren
  9. Um Sperrdaten für einen Snapshot anzuzeigen, wählen Sie den Zeitpunkt aus, zu dem Database Insights den Snapshot aufgenommen hat.

  10. Um eine Sperrstruktur zu erweitern, wählen Sie den Pfeil neben der Sitzungs-ID.

    Der Sperrbaum wurde erweitert

Snapshot-Daten sperren

Database Insights stellt für jede Sperranforderung die folgenden Informationen bereit. Um Spalten anzuzeigen, die standardmäßig nicht aktiviert sind, wählen Sie das Einstellungssymbol für die Tabelle Bäume sperren und aktivieren Sie andere Spalten.

Spaltenname Definition Standardspalte Hinweise

session_id

Die eindeutige Sitzungs-ID.

Ja

Das session_id ist abgeleitet vonHEX(pg_stat_activity.backend_start).HEX(pg_locks.pid).

pid

Die PID dieses Backends.

Ja

pg_locks.pid

blocked_sessions_count

Die Anzahl der durch diese Sperre blockierten Sitzungen.

Ja

Der blocked_sessions_count wird von der Anzahl der durch diese Sperre IDs blockierten Sitzungen abgeleitet.

last_query_executed

Die letzte von dieser Sitzung ausgeführte Abfrage. Bei Blockern ist es möglicherweise nicht die Abfrage, die die Sperrsperre enthält.

Ja

pg_stat_activity.query

wait_event

Der Name des Warteereignisses, wenn das Backend gerade wartet, andernfalls ist der Wert NULL.

Ja

pg_stat_activity.wait_event

blocking_time_(In Seconds)

Die Zeit (in Sekunden) seit dem Start dieser Sperre.

Ja

Der blocking_time_(In Seconds) wird von der Startzeit der wartenden Transaktion (pg_locks.waitstart) für den ersten Kellner abgeleitet.

blocking_mode

Der Sperrmodus, der von der blockierenden Sitzung beibehalten wurde.

Nein

pg_locks.mode

waiting_mode

Der von der wartenden Sitzung angeforderte Sperrmodus.

Nein

pg_locks.mode

application

Der Name der Anwendung, die mit diesem Backend verbunden ist.

Nein

pg_stat_activity.application_name

blocking_txn_start_time

Die Startzeit der blockierenden Transaktion oder Null, wenn keine Transaktion aktiv ist.

Nein

pg_stat_activity.xact_start

waiting_start_time

Die Zeit, zu der eine wartende Benutzersitzung begann, auf diese Sperre zu warten, oder Null, wenn die Sperre beibehalten wurde.

Nein

pg_locks.waitstart

session_start_time

Der Zeitpunkt, zu dem eine Benutzersitzung gestartet wurde.

Nein

pg_stat_activity.backend_start

state

Der Status eines Backends.

Nein

pg_stat_activity.state

wait_event_type

Der Typ des Warteereignisses, auf das diese Sitzung wartet.

Nein

pg_stat_activity.wait_event_type

last_query_exec_time

Der Zeitpunkt, zu dem die letzte Abfrage gestartet wurde.

Nein

pg_stat_activity.query_start

user

Der Name des Benutzers, der bei diesem Backend angemeldet ist.

Nein

pg_stat_activity.usename

host

Der Hostname des verbundenen Clients, wie er bei einer umgekehrten DNS-Suche von client_addr gemeldet wurde. Dieses Feld ist nur für IP-Verbindungen ungleich Null und nur, wenn log_hostname aktiviert ist.

Nein

pg_stat_activity.client_hostname

port

Die TCP-Portnummer, die der Client für die Kommunikation mit diesem Backend verwendet, oder -1 wenn ein Unix-Socket verwendet wird. Wenn dieses Feld Null ist, bedeutet dies, dass es sich um einen internen Serverprozess handelt.

Nein

pg_stat_activity.client_port

client_address

Die IP-Adresse des Clients, der mit diesem Backend verbunden ist. Wenn dieses Feld Null ist, bedeutet dies entweder, dass der Client über einen Unix-Socket auf dem Servercomputer verbunden ist oder dass es sich um einen internen Prozess wie Autovacuum handelt.

Nein

pg_stat_activity.client_addr

granted

Der Wert ist wahr, wenn die Sperre gehalten wird, und falsch, wenn die Sperre erwartet wird.

Nein

pg_locks.granted

waiting_tuple

Die Tupelnummer, auf die die Sperre innerhalb der Seite abzielt, oder Null, wenn das Ziel kein Tupel ist.

Nein

pg_locks.tuple

waiting_page

Die Seitennummer, auf die das Schloss innerhalb der Beziehung abzielt, oder Null, wenn das Ziel keine Relationsseite oder kein Tupel ist.

Nein

pg_locks.page

waiting_transaction_id

Die ID der Transaktion, auf die die Sperre abzielt, oder Null, wenn das Ziel keine Transaktions-ID ist.

Nein

pg_locks.transactionid

waiting_relation

Die OID der Relation, auf die die Sperre abzielt, oder Null, wenn das Ziel keine Relation oder Teil einer Relation ist.

Nein

pg_locks.relation

waiting_object_id

Die OID des Sperrziels innerhalb seines Systemkatalogs oder Null, wenn es sich bei dem Ziel nicht um ein allgemeines Datenbankobjekt handelt.

Nein

pg_locks.objid

waiting_database_id

Die OID der Datenbank, in der das Sperrziel existiert, oder Null, wenn das Ziel ein gemeinsam genutztes Objekt ist, oder Null, wenn das Ziel eine Transaktions-ID ist.

Nein

pg_locks.database

waiting_database_name

Der Name der Datenbank, in der das Sperrziel existiert.

Nein

pg_stat_activity.datname

waiting_locktype

Der Typ des sperrbaren Objekts: Relation, Extend, Frozenid, Page, Tuple, Transactionid, Virtualxid, Spectoken, Object, Userlock, Advisory oder Applytransaction.

Nein

pg_locks.locktype

is_fastpath

Der Wert ist true, wenn die Sperre mit dem Fast-Pfad gesetzt wurde, und false, wenn die Sperre aus der Hauptsperrtabelle übernommen wurde.

Nein

pg_locks.fastpath

Weitere Informationen zu den Werten in den pg_locks Ansichten pg_stat_activity und finden Sie in den folgenden Themen der PostgreSQL-Dokumentation.