Analysieren von Sperrstrukturen für Amazon Aurora PostgreSQL mit CloudWatch Database Insights
Um durch Sperren verursachte Leistungsprobleme zu beheben, können Sie Sperrstrukturen für PostgreSQL-Datenbanken von Amazon Aurora mit CloudWatch Database Insights analysieren.
Dropdown Aufgeteilt nach: Wählen Sie im Diagramm Datenbanklast die Dimensionen Blockierendes Objekt, Blockierende Sitzung oder Blockierendes SQL aus, um zu sehen, wie individuelle Top-Blocker im Laufe der Zeit zur DB-Last beitragen. Mit dem Diagramm „DB-Last“ können Sie analysieren, ob die Top-Blocker konstant sind oder sich häufig ändern. Anschließend können Sie Blocker beheben.
Registerkarte Sperranalyse: Wählen Sie DB-Auslastungsanalyse und anschließend die Registerkarte Sperranalyse aus, um Informationen zu Sperrkonflikten in Ihrer Datenbank anzuzeigen.
Anmerkung
CloudWatch Database Insights unterstützt die Sperranalyse für alle Aurora-PostgreSQL-Versionen. Um Sperrstrukturen zu analysieren, muss der erweiterte Modus von Database Insights aktiviert sein. Informationen zum Aktivieren des erweiterten Modus finden Sie unter Aktivieren des erweiterten Modus von Database Insights für Amazon Aurora und Aktivieren des erweiterten Modus von Database Insights für Amazon Relational Database Service.
Die Registerkarte „Sperranalyse“ enthält Informationen zu Sperrkonflikten in Ihrer Datenbank. Die Sperrstruktur-Visualisierung zeigt die Beziehungen und Abhängigkeiten zwischen Sperranforderungen aus verschiedenen Sitzungen.
Database Insights erfasst alle 15 Sekunden Snapshots. Snapshots zeigen die Sperrdaten für Ihre Datenbank zu einem bestimmten Zeitpunkt.
Anmerkung
Wenn CloudWatch eine hohe Anzahl von Sperren erkennt, zeigt CloudWatch auf der Registerkarte Sperranalyse das Banner Hohe Anzahl von Sperren erkannt an. CloudWatch erkennt diesen Zustand, wenn CloudWatch in 15 aufeinanderfolgenden Minuten für jedes 15-Sekunden-Intervall einen Sperr-Snapshot erstellt.
Jeder Knoten in der Struktur steht für eine bestimmte Sitzung. Der übergeordnete Knoten ist eine Sitzung, die die untergeordneten Knoten blockiert.
Führen Sie die folgenden Schritte aus, um Sperrstrukturen zu analysieren.
Analysieren Sie Sperrstrukturen wie folgt:
Melden Sie sich an der AWS-Managementkonsole an und öffnen Sie die CloudWatch-Konsole unter https://console.aws.amazon.com/cloudwatch/
. Wählen Sie Insights aus.
Wählen Sie Database Insights aus.
Wählen Sie die Ansicht Datenbank-Instance aus.
Wählen Sie eine DB-Instance aus.
Wählen Sie die Registerkarte DB-Auslastungsanalyse aus.
Wählen Sie die Registerkarte Sperranalyse aus.
Um Sperrdaten für eine DB-Instance anzuzeigen, wählen Sie einen Zeitraum von höchstens 1 Tag aus.
Wählen Sie ein Snapshot-Fenster aus. Standardmäßig wählt Database Insights das Snapshot-Fenster mit den meisten blockierten Sitzungen aus.
Um Sperrdaten für einen Snapshot anzuzeigen, wählen Sie den Zeitpunkt aus, zu dem Database Insights den Snapshot erfasst hat.
Zum Erweitern einer Sperrstruktur wählen Sie den Pfeil neben der Sitzungs-ID aus.
Sperren von Snapshot-Daten
Database Insights liefert für jede Sperranforderung die folgenden Informationen. Um Spalten anzuzeigen, die standardmäßig nicht aktiviert sind, wählen Sie das Einstellungssymbol für die Tabelle Sperrstrukturen aus und aktivieren Sie andere Spalten.
| Spaltenname | Definition | Standardspalte | Hinweise |
|---|---|---|---|
|
|
Die eindeutige Sitzungskennung. |
Ja |
Die |
|
|
Die PID dieses Backends. |
Ja |
|
|
|
Die Anzahl der durch diese Sperre blockierten Sitzungen. |
Ja |
Die |
|
|
Die letzte von dieser Sitzung ausgeführte Abfrage. Bei Blockern ist es möglicherweise nicht die Abfrage, die die blockierende Sperre enthält. |
Ja |
|
|
|
Der Name des Warteereignisses, wenn das Backend gerade wartet, andernfalls ist der Wert NULL. |
Ja |
|
|
|
Die Zeit (in Sekunden) seit dem Start dieser Sperre. |
Ja |
Die |
|
|
Der Sperrmodus, der von der blockierenden Sitzung aufrechterhalten wurde. |
Nein |
|
|
|
Der von der wartenden Sitzung angeforderte Sperrmodus. |
Nein |
|
|
|
Der Name der Anwendung, die mit diesem Backend verbunden ist. |
Nein |
|
|
|
Die Startzeit der blockierenden Transaktion oder Null, wenn keine Transaktion aktiv ist. |
Nein |
|
|
|
Die Zeit, zu der eine wartende Benutzersitzung begann, auf diese Sperre zu warten, oder Null, wenn die Sperre aufrechterhalten wurde. |
Nein |
|
|
|
Die Startzeit einer Benutzersitzung. |
Nein |
|
|
|
Der Status eines Backends. |
Nein |
|
|
|
Der Typ des Warteereignisses, auf das diese Sitzung wartet. |
Nein |
|
|
|
Die Startzeit der letzten Abfrage. |
Nein |
|
|
|
Der Name des Benutzers, der bei diesem Backend angemeldet ist. |
Nein |
|
|
|
Der Hostname des verbundenen Clients gemäß einer umgekehrten DNS-Suche von |
Nein |
|
|
|
Die TCP-Portnummer, die der Client für die Kommunikation mit diesem Backend verwendet, oder |
Nein |
|
|
|
Die IP-Adresse des Clients, der mit diesem Backend verbunden ist. Wenn dieses Feld Null ist, bedeutet das 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 |
|
|
|
Der Wert ist wahr, wenn die Sperre aufrechterhalten wird, und falsch, wenn die Sperre erwartet wird. |
Nein |
|
|
|
Die Tupelnummer, die das Ziel der Sperre innerhalb der Seite ist, oder Null, wenn das Ziel kein Tupel ist. |
Nein |
|
|
|
Die Seitennummer, die das Ziel der Sperre innerhalb der Beziehung ist, oder Null, wenn das Ziel keine Beziehungsseite und kein Tupel ist. |
Nein |
|
|
|
Die ID der Transaktion, die das Ziel der Sperre ist, oder Null, wenn das Ziel keine Transaktions-ID ist. |
Nein |
|
|
|
Die OID der Beziehung, die das Ziel der Sperre ist, oder Null, wenn das Ziel keine Beziehung und kein Teil einer Beziehung ist. |
Nein |
|
|
|
Die OID des Sperrziels innerhalb seines Systemkatalogs oder Null, wenn das Ziel kein allgemeines Datenbankobjekt ist. |
Nein |
|
|
|
Die OID der Datenbank, in der sich das Sperrziel befindet, oder 0, wenn das Ziel ein gemeinsam genutztes Objekt ist, oder Null, wenn das Ziel eine Transaktions-ID ist. |
Nein |
|
|
|
Der Name der Datenbank, in der sich das Sperrziel befindet. |
Nein |
|
|
|
Der Typ des sperrbaren Objekts: relation, extend, frozenid, page, tuple, transactionid, virtualxid, spectoken, object, userlock, advisory oder applytransaction. |
Nein |
|
|
|
Der Wert ist wahr, wenn die Sperre mit Fast Path abgerufen wurde, und falsch, wenn die Sperre aus der Hauptsperrtabelle abgerufen wurde. |
Nein |
|
Weitere Informationen zu den Werten in den Ansichten pg_stat_activity und pg_locks finden Sie in den folgenden Themen der PostgreSQL-Dokumentation.