Auf dieser Seite wird beschrieben, wie Sie mit Sperr- und Transaktionsstatistiken Transaktionen ermitteln, die zu hohen Latenzen führen.
Übersicht
Um die Konsistenz mehrerer gleichzeitiger Transaktionen zu gewährleisten, verwendet Spanner Sperren, um den Zugriff auf die Daten zu steuern. Sperrenkonflikte treten auf, wenn viele Transaktionen häufigen Zugriff auf dieselbe Sperre erfordern, 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.
Für Spanner-Vorgänge werden Sperren abgerufen, wenn die Vorgänge Teil einer Lese-/Schreibtransaktion sind. Bei schreibgeschützten Transaktionen werden keine Sperren abgerufen.
Spanner hilft Ihnen, Transaktionen zu identifizieren, die zu hohen Latenzen führen, indem Sie die folgenden Schritte ausführen:
- Mit Spanner Monitoring nach einem Anstieg der Latenzen suchen
- Probleme mit Sperrinhalten mit Statistiken zu Sperrungen beheben
- Problematische Transaktionen mithilfe von Transaktionsstatistiken ermitteln
Preise
Für Sperrstatistiken oder Transaktionsstatistiken fallen keine zusätzlichen Kosten an.
Regionskonfigurationen
Sperrenstatistiken und Transaktionsstatistiken sind sowohl in regionalen als auch in multiregionalen Konfigurationen verfügbar.
Datenaufbewahrung
Die maximale Datenaufbewahrung für die Daten, die in den Dashboards „Sperrstatistiken“ 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 Sperrstatistiken und Transaktionsstatistiken.
Erforderliche Rollen
Je nachdem, ob Sie ein IAM-Nutzer oder ein Nutzer der detaillierten Zugriffssteuerung sind, benötigen Sie unterschiedliche IAM-Rollen und ‑Berechtigungen.
IAM-Nutzer (Identity and Access Management, Identitäts- und Zugriffsverwaltung)
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:
-
Alle:
- Cloud Spanner-Betrachter (
roles/spanner.viewer) - Cloud Spanner-Datenbank-Leser (
roles/spanner.databaseReader)
- Cloud Spanner-Betrachter (
Die folgenden Berechtigungen in der Rolle Cloud Spanner Database Reader (
roles/spanner.databaseReader) sind erforderlich, um die Seite „Sperr- und Transaktionsstatistiken“ aufzurufen:
spanner.databases.beginReadOnlyTransactionspanner.databases.selectspanner.sessions.create
Nutzer mit detaillierter Zugriffssteuerung
Wenn Sie die detaillierte Zugriffssteuerung verwenden, müssen Sie Folgendes beachten:
- Cloud Spanner-Betrachter(
roles/spanner.viewer)- Sie haben nur detaillierte Berechtigungen für die Zugriffssteuerung und ihnen wird die Systemrolle
spanner_sys_readeroder eine ihrer Mitgliedsrollen zugewiesen.
- Sie haben nur detaillierte Berechtigungen für die Zugriffssteuerung und ihnen wird die Systemrolle
- Wählen Sie auf der Seite „Datenbankübersicht“ die
spanner_sys_readeroder eine Mitgliedsrolle 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 Console wird eine Übersicht der Instanz angezeigt.
Klicken Sie im Navigationsmenü auf Monitoring.
In der Google Cloud -Console werden Diagramme mit Daten für die Instanz angezeigt.
Legen Sie im Diagramm Latenz die Funktion auf
Writeund das Perzentil auf99thfest.Sehen Sie sich das aktualisierte Diagramm an, um zu prüfen, ob es Spitzen gibt.

Wenn die CPU-Auslastung nicht ansteigt und die Fehler bei Vorgängen pro Sekunde ansteigen, sind die Latenzspitzen wahrscheinlich auf Konflikte bei der Sperre zurückzuführen.
Mit Statistiken zu Sperren nach Problemen mit Sperrkonflikten suchen
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 Sperrkonflikte 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 Statistiken sperren.
In der Google Cloud Console wird das Diagramm Total lock wait (Gesamte Wartezeit bei Sperren) angezeigt, in dem die Wartezeit bei Sperren für jede Datenbank in der Instanz in Sekunden pro Minute dargestellt wird.
Standardmäßig werden Daten für
1 hourangezeigt, wie in der Zeitauswahl oben rechts im Dashboard „Sperrstatistiken“ 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 Datenbanken die Datenbank mit der längsten Wartezeit für Sperren aus.
Das Diagramm Gesamte Wartezeit bei Sperren wird aktualisiert und zeigt nur Daten für die ausgewählte Datenbank an.
Außerdem enthält der Bericht ein weiteres Diagramm, Wartezeit der Sperre pro Zeilenbereich, in dem die Wartezeit der Sperre nach Zeilenbereichen dargestellt wird.
Klicken Sie auf das Diagramm und ziehen Sie es horizontal, um die Stunde zu maximieren, in der ein Latenz-Spike zu sehen ist.

Wartezeitdaten für Sperren analysieren
In der Tabelle Lock Insights werden die folgenden Spalten aus den Systemtabellen SPANNER_SYS.LOCK_STATS angezeigt:
- Startschlüssel Zeilenbereich: Der Zeilenschlüssel, bei dem der Sperrkonflikt aufgetreten ist. Wenn der Konflikt einen Bereich von Zeilen betrifft, stellt der Wert den Startschlüssel des Bereichs dar. Ein Pluszeichen (
+) kennzeichnet einen Bereich. - Wartezeit bei Sperrungen: Die gesamte Wartezeit bei Sperrungen, visuell dargestellt auf einem horizontalen Balken. Standardmäßig wird diese Spalte zum Sortieren der Tabelle verwendet. Der Startschlüssel des Zeilenbereichs mit der längsten Sperrwartezeit wird oben angezeigt.
- Wartezeit der Sperre (Sekunden): Die kumulative Wartezeit bei Sperren für Sperrkonflikte, 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 Feld neben Filter.
Wählen Sie ein Attribut und einen Operator aus und geben Sie einen Wert an.
In der Tabelle werden Daten angezeigt, die dem Filter entsprechen.
Beispiele für Sperranfragen ansehen
Im Bereich Beispiele für Sperranfragen werden Details zu Beispielen für Sperranfragen von konkurrierenden Transaktionen angezeigt.
Wenn Sie Beispielinformationen für eine Sperranfrage für einen Startschlüssel für einen Zeilenbereich aufrufen möchten, klicken Sie in der Tabelle auf den entsprechenden Link.
Die Tabelle enthält die folgenden Spalten:
- Name der Beispielspalte: Die Spalte, in der der Sperrkonflikt im 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 sich die Latenz von Transaktionen in einer Instanz oder ausgewählten Datenbank ansehen. So können Sie die Transaktionen ermitteln, die aufgrund von Sperrkonflikten zu hohen Latenzen führen.
Latenzen von Transaktionen ansehen
So rufen Sie die Latenz von Transaktionen auf:
Klicken Sie im Navigationsbereich links auf Transaktionsstatistiken.
Wählen Sie oben in der Auswahl 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. In der Tabelle werden Messwertdaten aus den Systemtabellen SPANNER_SYS.TXN_STATS in den folgenden Spalten angezeigt:
- Fingerprint: Der Hash des Transaktions-Tags, falls vorhanden. Andernfalls wird der Hash anhand der an der Transaktion beteiligten Vorgänge berechnet. Der Wert ist ein Link zur Seite Transaktionsdetails.
- Transaktions-Tag: Das optionale Transaktions-Tag für die Transaktion. Statistische Daten für mehrere Transaktionen mit demselben Tag-String werden in einer einzigen Zeile mit dem Label
TRANSACTION_TAGgruppiert, das dem Tag-String entspricht. - 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): Die durchschnittliche Zeit, die für die Ausführung der Transaktion benötigt wird. Standardmäßig wird 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 korrelieren 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.
Wählen Sie ein Attribut 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 werden die folgenden Informationen angezeigt:
Eine Leiste mit numerischen Werten für jeden dieser Messwerte:
- Durchschnittliche Byte: Die durchschnittliche Rate der von der Transaktion geschriebenen Byte in Byte pro Minute.
- Durchschnittliche Latenz: Die durchschnittliche Zeit in Sekunden, die vom ersten Vorgang der Transaktion bis zum Commit oder Abbruch benötigt wird.
- Durchschnittliche Commit-Latenz: Die durchschnittliche Zeit in Sekunden, die für die Ausführung des Commit-Vorgangs benötigt wird.
- Gesamtzahl der Versuche: Die durchschnittliche Rate der Transaktionsversuche in Versuchen pro Minute. Weitere Informationen zu Intervallen finden Sie unter Transaktionsstatistiken.
- Gesamtzahl der Abbrüche: Die durchschnittliche Rate der Transaktionsversuche, die abgebrochen werden, in Abbrüchen pro Minute, einschließlich Versuchen, die vor dem Aufrufen der Methode zum Committen der Transaktion abgebrochen werden. Weitere Informationen zu Intervallen finden Sie unter Transaktionsstatistiken.
Diagramme, in denen diese Werte dargestellt sind. Im Diagramm Versuche und Abbrüche insgesamt wird die Rate der Transaktionsversuche (in Versuchen pro Minute) und Abbrüche (in Abbrüchen pro Minute) pro Minute dargestellt. Um Transaktionsversuche und ‑abbrüche pro Minute anzuzeigen, fragt die Google Cloud Console die Tabelle
SPANNER_SYS.TXN_STATS_TOP_*ab, die den ausgewählten Zeitraum am besten abdeckt (_MINUTE,_10MINUTEoder_HOUR). Die Google Cloud Console teilt dann die Werte in der SpalteATTEMPT_COUNTund der SpalteCOMMIT_ABORT_COUNTaus der ausgewählten Tabelle durch die Intervalldauer in Minuten (1, 10 oder 60), um eine Rate pro Minute zu erhalten. Weitere Informationen zu Intervallen finden Sie unter Transaktionsstatistiken.Außerdem wird im Diagramm Durchschnittliche Teilnehmer 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.