Auf dieser Seite wird beschrieben, wie Sie mit Lock- und Transaktions-Insights Transaktionen mit hoher Latenz identifizieren können.
Übersicht
Damit die Konsistenz der vielen simultanen Transaktionen garantiert wird, verwendet Spanner Sperren, um den Zugriff auf die Daten zu steuern. Sperrenkonflikte treten auf, wenn viele Transaktionen häufigen Zugriff auf dieselbe Sperre benötigen, was zu hohen Latenzen führt. Ohne visuelle Benutzeroberfläche kann es mühsam sein, die problematischen Transaktionen zu identifizieren, die zu einer hohen Anzahl von Sperrkonflikten führen.
Spanner-Vorgänge erhalten Sperren, wenn die Vorgänge Teil einer Lese-Schreib-Transaktion sind. Schreibgeschützte Transaktionen erhalten keine Sperren.
Mit Spanner können Sie Transaktionen mit hoher Latenz ermitteln. Gehen Sie dazu so vor:
- Mit Spanner Monitoring nach einem Anstieg der Latenzen suchen
- Probleme mit Sperrinhalten mit Statistiken zu Sperrungen beheben
- Problematische Transaktionen mithilfe von Transaktionsstatistiken identifizieren
Preise
Für Lock Insights oder Transaction Insights fallen keine zusätzlichen Kosten an.
Regionenkonfigurationen
Lock Insights und Transaction Insights sind sowohl in regionalen als auch in multiregionalen Konfigurationen verfügbar.
Datenaufbewahrung
Die maximale Datenaufbewahrung für die Daten, die in den Dashboards „Schlossstatistiken“ und „Transaktionsstatistiken“ angezeigt werden, beträgt 30 Tage. Für Diagramme werden Daten aus SPANNER_SYS.*
-Tabellen abgerufen, die eine maximale Aufbewahrungsdauer von 30 Tagen haben.
Weitere Informationen zu diesen Tabellen und zur Datenaufbewahrung finden Sie unter Schlossstatistiken und Transaktionsstatistiken.
Erforderliche Rollen
Je nachdem, ob Sie ein IAM-Nutzer oder ein Nutzer mit detaillierter Zugriffssteuerung sind, benötigen Sie unterschiedliche IAM-Rollen und -Berechtigungen.
Identity and Access Management-Nutzer (IAM)
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für die Instanz zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Aufrufen der Seite „Sperr- und Transaktionsstatistiken“ benötigen:
-
Cloud Spanner-Betrachter (
roles/spanner.viewer
) -
Cloud Spanner-Datenbankleser (
roles/spanner.databaseReader
)
Die folgenden Berechtigungen in der Rolle Cloud Spanner Database Reader (
roles/spanner.databaseReader
) sind erforderlich, um die Seite „Lock and Transaction Insights“ aufzurufen:
spanner.databases.beginReadOnlyTransaction
spanner.databases.select
spanner.sessions.create
Nutzer mit detaillierter Zugriffssteuerung
Wenn Sie die detaillierte Zugriffssteuerung verwenden, achten Sie darauf, dass Sie Folgendes tun:
- Sie haben die Rolle Cloud Spanner-Betrachter(
roles/spanner.viewer
). - Sie haben nur detaillierte Berechtigungen für die Zugriffssteuerung und ihnen wird die Systemrolle
spanner_sys_reader
oder eine ihrer Mitgliedsrollen zugewiesen. - Wählen Sie auf der Seite „Datenbankübersicht“ die Rolle
spanner_sys_reader
oder eine Mitgliederrolle als aktuelle Systemrolle aus.
Weitere Informationen finden Sie unter Detaillierte Zugriffssteuerung und Systemrollen für die detaillierte Zugriffssteuerung.
Mit Spanner Monitoring nach Latenzspitzen suchen
Mit Cloud Monitoring können Sie Benachrichtigungen für Messwerte festlegen, die für alle Anfragen bestimmte Schwellenwerte überschreiten.
Wenn Sie eine Benachrichtigung erhalten, die auf einen Anstieg der Latenzen für eine Instanz hinweist, können Sie dies im Spanner-Monitoring-Dashboard bestätigen. Dort werden Diagramme für verschiedene wichtige Messwerte angezeigt. Im Diagramm Latenz können Sie hohe Latenzen beim 50. und 99. Perzentil sehen.
So bestätigen Sie einen Anstieg der Schreiblatenzen im 99. Perzentil:
Rufen Sie in der Google Cloud Console die Seite Spanner-Instanzen auf.
Klicken Sie auf den Namen der Instanz.
In der Google Cloud Konsole wird eine Übersicht der Instanz angezeigt.
Klicken Sie im Navigationsmenü auf Monitoring.
In der Google Cloud -Konsole werden Diagramme mit Daten für die Instanz angezeigt.
Legen Sie im Diagramm Latenz für Funktion den Wert
Write
und für Perzentil den Wert99th
fest.Prüfen Sie das aktualisierte Diagramm auf Spitzen.
Wenn Sie feststellen, dass die CPU-Auslastung nicht ansteigt und die Fehler bei Vorgängen pro Sekunde ansteigen, sind die Latenzspitzen wahrscheinlich auf die Sperrkonflikte zurückzuführen.
Konflikte durch Sperren mithilfe von Statistiken zu Sperren prüfen
Im Dashboard „Sperrenstatistiken“ können Sie sich die Wartezeit bei Sperren in einer Instanz oder ausgewählten Datenbank ansehen. So können Sie feststellen, ob hohe Latenzen auf Konflikte bei der Sperrung zurückzuführen sind.
Hohe Wartezeit bei Sperren prüfen
So prüfen Sie, ob die Wartezeit für Sperren hoch ist:
Klicken Sie im Navigationsmenü auf Lock-Statistiken.
In der Google Cloud Console wird das Diagramm Warten auf Sperren insgesamt angezeigt, in dem die Wartezeit bei Sperren für jede Datenbank in der Instanz dargestellt ist.
Die angezeigten Daten beziehen sich standardmäßig auf
1 hour
, wie in der Zeitauswahl rechts oben im Dashboard „Schloss-Statistiken“ zu sehen ist. Wenn Sie Daten für einen größeren Bereich sehen möchten, wählen Sie eine andere Option aus, z. B.1 day
.Weitere Informationen finden Sie unter Mit Diagrammen arbeiten.
Wählen Sie oben in der Auswahl Databases (Datenbanken) die Datenbank mit der längsten Wartezeit für Sperren aus.
Das Diagramm Gesamte Wartezeit bei Sperren wird aktualisiert und enthält nur noch Daten für die ausgewählte Datenbank.
Außerdem enthält das Diagramm Wartezeit der Sperre pro Zeilenbereich Grafiken für die Wartezeit der Sperre nach Zeilenbereichen.
Klicken Sie auf das Diagramm und ziehen Sie es horizontal, um die Stunde zu vergrößern, in der ein Latenzspitzenwert zu sehen ist.
Wartezeit bei Sperren analysieren
In der Tabelle Lock Insights (Schlossstatistiken) werden die folgenden Spalten aus den Systemtabellen SPANNER_SYS.LOCK_STATS
angezeigt:
- Startschlüssel Zeilenbereich: Der Zeilenschlüssel, in dem der Sperrkonflikt aufgetreten ist. Wenn der Konflikt einen Bereich von Zeilen beinhaltet, stellt dieser Wert den Startschlüssel des Bereichs dar. Ein Pluszeichen (
+
) bezeichnet einen Bereich. - Wartezeit bei Sperren: Die gesamte Wartezeit bei Sperren wird als horizontaler Balken dargestellt. Standardmäßig wird diese Spalte zum Sortieren der Tabelle verwendet. Der Startschlüssel des Zeilenbereichs mit der höchsten Sperrwartenzeit wird oben angezeigt.
- Wartezeit bei Sperrungen (Sekunden): Die kumulative Wartezeit bei Sperrungen von Sperrkonflikten, die für alle Spalten im Zeilenschlüsselbereich aufgezeichnet wurden, in Sekunden.
- Wartezeit bei Sperren (%): Die Wartezeit der Sperrkonflikte, die für alle Spalten im Zeilenschlüsselbereich aufgezeichnet wurden, als Prozentsatz der gesamten Wartezeit bei Sperren für alle Zeilenschlüsselbereiche in der Datenbank.
Wenn Sie die Daten im Diagramm Lock wait per row range mit den Daten in der Tabelle in Beziehung setzen möchten, wählen Sie eine Zeile aus. Die zugehörige Zeile wird hervorgehoben. Wenn Sie das Kästchen für eine Zeile in der Tabelle auswählen, wird die zugehörige Linie im Diagramm angezeigt.
So filtern Sie die Daten in der Tabelle:
Klicken Sie in das Textfeld neben Filter.
Wählen Sie eine Eigenschaft und einen Operator aus und geben Sie einen Wert an.
In der Tabelle werden Daten angezeigt, die dem Filter entsprechen.
Beispielhafte Sperranfragen ansehen
Im Bereich Beispielhafte Sperranfragen werden Details zu Beispiel-Sperranfragen aus konkurrierenden Transaktionen angezeigt.
Wenn Sie Informationen zu Beispielanfragen zum Sperren für einen Startschlüssel für einen Zeilenbereich aufrufen möchten, klicken Sie auf den entsprechenden Link in der Tabelle.
Die Tabelle enthält die folgenden Spalten:
- Name der Beispielspalte: Die Spalte, in der der Sperrkonflikt für den Zeilenschlüsselbereich aufgetreten ist.
- Sperrmodus: Der angeforderte Sperrmodus.
- Transaktionen ansehen: Ein Link zur Seite Transaktionsstatistiken, auf der die Transaktionen angezeigt werden, die möglicherweise um Sperren konkurrieren.
Konkurrierende Transaktionen mithilfe von Transaktionsstatistiken identifizieren
Im Dashboard „Transaktionsstatistiken“ können Sie die Latenz von Transaktionen in einer Instanz oder ausgewählten Datenbank ansehen. So können Sie die Transaktionen identifizieren, die aufgrund von Sperrkonflikten zu hohen Latenzen führen.
Latenzen von Transaktionen ansehen
So rufen Sie die Latenz von Transaktionen auf:
Klicken Sie im Navigationsmenü auf der linken Seite auf Transaktionsstatistiken.
Wählen Sie oben in der Auswahl Databases (Datenbanken) die Datenbank mit der längsten Wartezeit für Sperren aus.
Alternativ können Sie im Dashboard „Sperrstatistiken“ auf Transaktionen ansehen klicken, um Transaktionen zu filtern, bei denen Daten in eine bestimmte Beispielspalte gelesen oder geschrieben werden.
Die angezeigten Daten beziehen sich standardmäßig auf
1 hour
, wie in der Zeitachse oben rechts im Dashboard „Transaktionsstatistiken“ zu sehen ist.
Das Dashboard enthält die folgenden Diagramme:
Das Diagramm Durchschnittliche Latenz (alle Transaktionen) zeigt die Latenz für alle Transaktionen in der Instanz an.
Im Diagramm Durchschnittliche Latenz (pro Transaktion) wird die Latenz für jede Transaktion für die ausgewählte Datenbank angezeigt.
Transaktionsdaten analysieren
In der Tabelle unter den Diagrammen können Sie Daten für jede Transaktion ansehen und analysieren. Die Tabelle enthält Messwertdaten aus den SPANNER_SYS.TXN_STATS
-Systemtabellen in den folgenden Spalten:
- Fingerprint: Der Hash des Transaktions-Tags, falls er vorhanden ist. Andernfalls wird der Hash anhand der Vorgänge berechnet, die an der Transaktion beteiligt sind. Der Wert ist ein Link, der zur Seite Transaktionsdetails führt.
- Transaktions-Tag: Das optionale Transaktions-Tag für die Transaktion. Statistische Daten für mehrere Transaktionen mit demselben Tag-String werden in einer einzelnen Zeile gruppiert, wobei das
TRANSACTION_TAG
-Label mit dem Tag-String übereinstimmt. - Betroffene Tabellen: Die Tabellen, die von der Transaktion betroffen sind.
- Table.column Read: Die Spalten, aus denen die Transaktion gelesen hat.
- Table.column Written: Die Spalten, in die die Transaktion geschrieben hat.
- Durchschnittliche Latenz (Sekunden): Durchschnittliche Anzahl der Sekunden, die für die Ausführung der Transaktion benötigt werden. Standardmäßig ist die Tabelle nach dieser Spalte in absteigender Reihenfolge sortiert.
Wenn Sie die Daten im Diagramm Durchschnittliche Latenz (pro Transaktion) mit den Daten in der Tabelle in Beziehung setzen möchten, wählen Sie eine Linie im Diagramm aus. Die entsprechende Zeile in der Tabelle wird hervorgehoben.
So filtern Sie die Daten in der Tabelle:
Klicken Sie neben Filter auf.
Wählen Sie eine Eigenschaft und einen Operator aus und geben Sie einen Wert an.
In der Tabelle werden Daten angezeigt, die dem Filter entsprechen.
Detaillierte Informationen zu einer Transaktion ansehen
Wenn Sie detaillierte Informationen zu einer Transaktion aufrufen möchten, z. B. zu der mit der höchsten Latenz, klicken Sie in der entsprechenden Zeile der Tabelle auf den Link Fingerprint.
Die Seite Transaktionsdetails wird angezeigt. Neben der Detailtabelle oben enthält sie die folgenden Informationen:
Ein Balken mit numerischen Werten für jeden dieser Messwerte:
- Durchschnittliche Anzahl von Byte: Die durchschnittliche Anzahl der von der Transaktion geschriebenen Byte.
- Durchschnittliche Latenz: Die durchschnittliche Anzahl der Sekunden, die vom ersten Vorgang der Transaktion bis zum Commit oder Abbruch benötigt wurden.
- Durchschnittliche Commit-Latenz: Die durchschnittliche Anzahl der Sekunden, die für die Ausführung des Commit-Vorgangs benötigt werden.
- Gesamtzahl der Versuche: Die Gesamtzahl der Transaktionsversuche.
- Gesamtzahl der Abbrüche: Die Gesamtzahl der Transaktionsversuche, die abgebrochen wurden, einschließlich derer, die vor dem Aufrufen der Commit-Methode der Transaktion abgebrochen wurden.
Diagramme mit diesen Werten.
Außerdem wird im Diagramm Durchschnittliche Teilnehmerzahl die durchschnittliche Anzahl der Teilnehmer bei jedem Commit-Versuch angezeigt.
Prüfen Sie, ob die Transaktionsform optimiert werden kann, um die Latenz zu verringern. Wenden Sie die empfohlenen Vorgehensweisen an, um Sperrkonflikte zu reduzieren.