Transaktionen identifizieren, die zu hohen Latenzen führen können

Auf dieser Seite wird beschrieben, wie Sie Lock Insights und Transaction Insights verwenden, um Transaktionen zu identifizieren, 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. Sperrkonflikte treten auf, wenn viele Transaktionen häufig auf dieselbe Sperre zugreifen müssen, was zu hohen Latenzen führt. Ohne visuelle Oberflä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 sie Teil einer Lese-/Schreib Transaktion sind. Schreibgeschützte Transaktionen erhalten keine Sperren.

Spanner hilft Ihnen, Transaktionen zu identifizieren, die zu hohen Latenzen führen, indem Sie die folgenden Schritte ausführen:

  1. Mit Spanner Monitoring nach Latenzspitzen suchen
  2. Mit Lock Insights nach Sperrkonflikten suchen
  3. Mit Transaction Insights problematische Transaktionen 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 Multiregionenkonfigurationen verfügbar.

Datenaufbewahrung

Die maximale Datenaufbewahrungsdauer für die Daten, die in den Dashboards von Lock Insights und Transaction Insights 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 Statistiken zu Sperrungen und Statistiken zu Transaktionen.

Erforderliche Rollen

Je nachdem, ob Sie ein IAM-Nutzer oder ein Nutzer mit detaillierter Zugriffssteuerung sind, benötigen Sie unterschiedliche IAM-Rollen und -Berechtigungen.

IAM-Nutzer

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 „Lock Insights“ und „Transaction Insights“ benötigen:

Die folgenden Berechtigungen in der Rolle „Cloud Spanner-Datenbank-Leser“ (roles/spanner.databaseReader) sind erforderlich, um die Seite „Lock Insights“ und „Transaction Insights“ aufzurufen:

  • spanner.databases.beginReadOnlyTransaction
  • spanner.databases.select
  • spanner.sessions.create

Nutzer mit detaillierter Zugriffssteuerung

Wenn Sie ein Nutzer mit detaillierter Zugriffssteuerung sind, müssen Sie Folgendes tun:

  • Sie müssen die Rolle „Cloud Spanner Betrachter“ (roles/spanner.viewer)
      haben.
    • Sie haben nur Berechtigungen für die detaillierte Zugriffssteuerung und die Systemrolle spanner_sys_reader oder eine ihrer Mitgliedsrollen wurde Ihnen zugewiesen.
  • Wählen Sie auf der Seite „Datenbankübersicht“ spanner_sys_reader oder 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

In Cloud Monitoring können Sie Benachrichtigungen für Messwerte festlegen, die bestimmte Grenzwerte für alle Anfragen überschreiten.

Wenn Sie eine Benachrichtigung erhalten, die auf eine Latenzspitze 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 eine Spitze bei den Schreiblatenzen beim 99. Perzentil:

  1. Rufen Sie in der Google Cloud Console die Seite Spanner-Instanzen auf.

    Zu Spanner-Instanzen

  2. Klicken Sie auf den Namen der Instanz.

    In der Google Cloud Console wird eine Übersicht über die Instanz angezeigt.

  3. Klicken Sie im Navigationsmenü auf Monitoring.

    In der Google Cloud Console werden Diagramme mit Daten für die Instanz angezeigt.

  4. Legen Sie im Diagramm Latenz für Funktion den Wert Write und für Perzentil den Wert 99th fest.

  5. Prüfen Sie im aktualisierten Diagramm, ob es Spitzen gibt.

Ein Diagramm mit Schreiblatenzen im 99. Perzentil

Wenn Sie feststellen, dass die CPU-Auslastung nicht ansteigt und die Fehler bei den Vorgängen pro Sekunde ansteigen, sind die Latenzspitzen wahrscheinlich auf Sperrkonflikte zurückzuführen.

Mit Lock Insights nach Sperrkonflikten suchen

Im Lock Insights-Dashboard können Sie die Wartezeit bei Sperren in einer Instanz oder ausgewählten Datenbank sehen. So können Sie bestätigen, ob hohe Latenzen auf Sperrkonflikte zurückzuführen sind.

Auf hohe Wartezeiten bei Sperren prüfen

So prüfen Sie, ob es hohe Wartezeiten bei Sperren gibt:

  1. Klicken Sie im Navigationsmenü auf Lock Insights.

    In der Google Cloud Console wird das Diagramm Gesamtwartezeit bei Sperren angezeigt, das die Wartezeit bei Sperren für jede Datenbank in der Instanz zeigt.

    Die angezeigten Daten beziehen sich standardmäßig auf 1 hour, wie im Zeitselektor oben rechts im Lock Insights-Dashboard zu sehen ist. Wenn Sie Daten für einen längeren Zeitraum sehen möchten, wählen Sie eine andere Option aus, z. B. 1 day.

    Weitere Informationen finden Sie unter Mit Diagrammen arbeiten.

  2. Wählen Sie oben im Selektor Datenbanken die Datenbank aus, die die höchste Wartezeit bei Sperren aufweist.

    Das Diagramm Gesamtwartezeit bei Sperren wird aktualisiert und zeigt nur Daten für die ausgewählte Datenbank.

    Außerdem werden in einem weiteren Diagramm, Wartezeit bei Sperren pro Zeilenbereich, Grafiken für die Wartezeit bei Sperren nach Zeilen bereichen angezeigt.

  3. Klicken Sie auf das Diagramm und ziehen Sie es horizontal, um die Stunde zu maximieren, in der eine Latenzspitze sichtbar ist.

Dashboard „Statistiken zu Sperren“

Daten zur Wartezeit bei Sperren analysieren

Die Tabelle Lock Insights enthält die folgenden Spalten aus den SPANNER_SYS.LOCK_STATS System tabellen:

  • Startschlüssel Zeilenbereich: Der Zeilenschlüssel, in dem der Sperrkonflikt aufgetreten ist. Wenn der Konflikt einen Bereich von Zeilen beinhaltet, stellt der Wert den Startschlüssel des Bereichs dar. Ein Pluszeichen (+) kennzeichnet einen Bereich.
  • Wartezeit bei Sperren: Die Gesamtwartezeit bei Sperren, die visuell in einem horizontalen Balken dargestellt wird. Standardmäßig wird diese Spalte in der Tabelle für Sortierungen verwendet und der Startschlüssel des Zeilenbereichs mit der höchsten Wartezeit bei Sperren wird oben angezeigt.
  • Wartezeit bei Sperren (Sekunden): Die kumulative Wartezeit bei Sperren 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 Gesamtwartezeit bei Sperren für alle Zeilenschlüsselbereiche in der Datenbank.

Wenn Sie die Daten im Diagramm Wartezeit bei Sperren pro Zeilenbereich mit den Daten in der Tabelle korrelieren möchten, wählen Sie eine Linie aus. Die zugehörige Zeile wird hervorgehoben. Wählen Sie umgekehrt das Kästchen für eine Zeile in der Tabelle aus, um die zugehörige Linie im Diagramm zu sehen.

Tabelle mit Statistiken zu Sperren

So filtern Sie die Daten in der Tabelle:

  1. Klicken Sie in das Feld neben Filter.

  2. 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.

Beispiele für Sperranfragen ansehen

Im Bereich Beispiele für Sperranfragen werden Details zu Beispielen für Sperranfragen aus konkurrierenden Transaktionen angezeigt.

Wenn Sie Informationen zu Beispielen für Sperranfragen für einen Startschlüssel des Zeilenbereichs sehen möchten, klicken Sie in der Tabelle auf den entsprechenden Link.

Die Tabelle enthält die folgenden Spalten mit Informationen:

  • Name der Beispielspalte: Die Spalte, in der der Sperrkonflikt im Zeilenschlüsselbereich aufgetreten ist.
  • Sperrmodus: Der angeforderte Sperr modus.
  • Transaktionen ansehen: Ein Link zur Seite Transaction Insights, auf der die Transaktionen angezeigt werden, die möglicherweise um Sperren konkurrieren.

Die Seite „Statistiken zu Sperren“

Mit Transaction Insights konkurrierende Transaktionen identifizieren

Im Transaction Insights-Dashboard können Sie die Latenz von Transaktionen in einer Instanz oder ausgewählten Datenbank sehen. So können Sie die Transaktionen identifizieren, die aufgrund von Sperrkonflikten möglicherweise zu hohen Latenzen führen.

Latenzen von Transaktionen ansehen

So sehen Sie sich die Latenz von Transaktionen an:

  1. Klicken Sie in der linken Navigationsleiste auf Transaction Insights.

  2. Wählen Sie oben im Selektor Datenbanken die Datenbank aus, die die höchste Wartezeit bei Sperren aufweist.

    Alternativ können Sie im Lock Insights-Dashboard auf Transaktionen ansehen klicken, um Transaktionen zu filtern, die in eine bestimmte Beispielspalte lesen oder schreiben.

    Die angezeigten Daten beziehen sich standardmäßig auf 1 hour, wie im Zeitselektor oben rechts im Transaction Insights-Dashboard zu sehen ist.

Das Dashboard enthält die folgenden Diagramme:

  • Im Diagramm Durchschnittliche Latenz (alle Transaktionen) wird die Latenz für alle Transaktionen in der Instanz angezeigt.

  • Im Diagramm Durchschnittliche Latenz (pro Transaktion) wird die Latenz für jede Transaktion für die ausgewählte Datenbank angezeigt.

Das Dashboard „Transaktionsstatistiken“

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:

  • Fingerabdruck: Der Hash des Transaktions-Tags, falls vorhanden. 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 Label TRANSACTION_TAG 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 wurden. Standardmäßig ist die Tabelle in absteigender Reihenfolge nach dieser Spalte 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:

  1. Klicken Sie neben Filter auf.

  2. 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.

Tabelle „Transaktionsstatistiken“

Detaillierte Informationen zu einer Transaktion ansehen

Wenn Sie detaillierte Informationen zu einer Transaktion sehen möchten, z. B. zu der mit der höchsten Latenz, klicken Sie in der entsprechenden Zeile in der Tabelle auf den Link Fingerabdruck.

Die Seite Transaktionsdetails wird angezeigt. Neben der Tabelle mit den Details oben werden die folgenden Informationen angezeigt:

  • Ein Balken mit numerischen Werten für jeden dieser Messwerte:

    • Durchschnittliche Anzahl der 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 wurden.
    • Gesamtzahl der Versuche: Die Gesamtzahl der Transaktionsversuche. Diese Anzahl stellt eine Rate pro Minute dar. Weitere Informationen zu Intervallen finden Sie unter Statistiken zu Transaktionen.
    • Gesamtzahl der Abbrüche: Die Gesamtzahl der Transaktionsversuche, die abgebrochen wurden, einschließlich der Versuche, die abgebrochen wurden, bevor die Methode für den Transaktions-Commit aufgerufen wurde. Diese Anzahl stellt eine Rate pro Minute dar. Weitere Informationen zu Intervallen finden Sie unter Statistiken zu Transaktionen.
  • Diagramme, die diese Werte darstellen. Im Diagramm Versuche und Abbrüche insgesamt wird die Anzahl oder Rate der Transaktionsversuche und -abbrüche pro Minute angezeigt. Um Transaktionsversuche und -abbrüche pro Minute anzuzeigen, fragt die Google Cloud Console die SPANNER_SYS.TXN_STATS_TOP_* Tabelle ab, die den ausgewählten Zeitraum am besten abdeckt (_MINUTE, _10MINUTE oder _HOUR). Anschließend teilt die Google Cloud Console die Werte in der ATTEMPT_COUNT Spalte und der COMMIT_ABORT_COUNT Spalte aus der ausgewählten Tabelle durch die Intervalllänge in Minuten (1, 10 oder 60), um eine Rate pro Minute zu erhalten. Weitere Informationen zu Intervallen finden Sie unter Statistiken zu Transaktionen.

    Außerdem zeigt das Diagramm Durchschnittliche Anzahl der Teilnehmer die durchschnittliche Anzahl der Teilnehmer an jedem Commit-Versuch.

Seite „Details zu Transaktionsstatistiken“

Prüfen Sie, ob die Transaktionsform optimiert werden kann, um die Latenzen zu reduzieren. Wenden Sie die empfohlenen Best Practices an, um Sperrkonflikte zu reduzieren.

Weitere Informationen