Auf dieser Seite wird beschrieben, wie Sie mit dem Query Insights-Dashboard Leistungsprobleme in Spanner erkennen und analysieren.
Übersicht über Query Insights
Mit Query Insights können Sie Leistungsprobleme bei Abfragen und
DML (INSERT, UPDATE, und DELETE) Anweisungen
für eine Spanner-Datenbank erkennen und diagnostizieren. Es unterstützt ein intuitives Monitoring und liefert Diagnoseinformationen, die Ihnen helfen, über die Erkennung hinaus die Ursache von Leistungsproblemen zu identifizieren.
Mit Query Insights können Sie die Leistung von Spanner-Abfragen verbessern. Dabei werden Sie durch die folgenden Schritte geführt:
- Feststellen, ob ineffiziente Abfragen eine hohe CPU-Auslastung verursachen.
- Potenziell problematische Abfrage oder potenziell problematisches Tag identifizieren
- Abfrage oder Anfrage-Tag analysieren, um Probleme zu ermitteln
Query Insights ist in Konfigurationen mit einer und mehreren Regionen verfügbar.
Preise
Für Query Insights fallen keine zusätzlichen Kosten an.
Datenaufbewahrung
Query Insights bewahrt Daten maximal 30 Tage lang auf.
Für das Diagramm Gesamte CPU-Auslastung (pro Abfrage oder Anfrage-Tag) ruft Spanner Daten aus den Tabellen SPANNER_SYS.QUERY_STATS_TOP_* ab. Diese Tabellen haben eine maximale Aufbewahrungsdauer von 30 Tagen. Weitere Informationen finden Sie unter Datenaufbewahrung.
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 zu gewähren, um die Berechtigungen zu erhalten, die Sie zum Aufrufen der Seite „Query Insights“ benötigen:
-
Cloud Spanner-Betrachter (
roles/spanner.viewer) -
Cloud Spanner-Datenbank-Leser (
roles/spanner.databaseReader)
Die folgenden Berechtigungen in der Rolle „Cloud Spanner-Datenbank-Leser“(
roles/spanner.databaseReader)
sind erforderlich, um die Seite „Query Insights“ aufzurufen:
spanner.databases.beginReadOnlyTransactionspanner.databases.selectspanner.sessions.create
Nutzer mit detaillierter Zugriffssteuerung
Wenn Sie ein Nutzer mit detaillierter Zugriffssteuerung sind, prüfen Sie Folgendes:
- Sie haben die Rolle „Cloud Spanner-Betrachter“ (
roles/spanner.viewer). - Sie haben Berechtigungen für die detaillierte Zugriffssteuerung und die Systemrolle
spanner_sys_readeroder eine ihrer Mitgliedsrollen wurde Ihnen zugewiesen. - Wählen Sie auf der Seite „Datenbankübersicht“ die Rolle
spanner_sys_readeroder eine Mitgliedsrolle als aktuelle Systemrolle aus.
Weitere Informationen finden Sie unter Detaillierte Zugriffssteuerung und Systemrollen für die detaillierte Zugriffssteuerung.
Das Query Insights-Dashboard
Im Query Insights-Dashboard wird die Abfragelast basierend auf der von Ihnen ausgewählten Datenbank und dem ausgewählten Zeitraum angezeigt. Die Abfragelast ist ein Maß für die gesamte CPU-Auslastung für alle Abfragen in der Instanz im ausgewählten Zeitraum. Das Dashboard bietet eine Reihe von Filtern, mit denen Sie die Abfragelast anzeigen können.
So rufen Sie das Query Insights-Dashboard für eine Datenbank auf:
- Wählen Sie im linken Navigationsbereich Query Insights aus. Das Dashboard „Query Insights“ wird geöffnet.
- Wählen Sie in der Liste Datenbanken eine Datenbank aus. Im Dashboard werden die Informationen zur Abfragelast für die Datenbank angezeigt.
Zu den Bereichen des Dashboards gehören:
- Liste „Datenbanken“: Filtert die Abfragelast für eine bestimmte Datenbank oder für alle Datenbanken.
- Filter „Zeitraum“: Filtert die Abfragelast nach Zeiträumen, z. B. Stunden, Tagen oder einem benutzerdefinierten Zeitraum.
- Diagramm „Gesamte CPU-Auslastung (alle Abfragen)“: Zeigt die aggregierte Last aller Abfragen an.
- Diagramm „Gesamte CPU-Auslastung (pro Abfrage oder Anfrage-Tag)“: Zeigt die CPU Auslastung nach Abfrage oder Anfrage-Tag an.
- Tabelle „Top-N-Abfragen und ‑Tags“: Zeigt die Liste der Top-Abfragen und ‑Anfrage- Tags sortiert nach CPU-Auslastung an. Siehe Potenziell problematische Abfrage oder potenziell problematisches Tag identifizieren.

Dashboard-Leistung
Verwenden Sie Abfrageparameter oder kennzeichnen Sie Ihre Abfragen mit Tags um die Leistung von Query Insights zu optimieren. Wenn Sie Ihre Abfragen nicht mit Parametern versehen oder mit Tags kennzeichnen, werden möglicherweise zu viele Ergebnisse zurückgegeben, was dazu führen kann, dass die Tabelle „Top-N-Abfragen und ‑Tags“ nicht richtig geladen wird.
Bestätigen, ob ineffiziente Abfragen für eine hohe CPU-Auslastung verantwortlich sind
Die gesamte CPU-Auslastung ist ein Maß für die Arbeit (in CPU-Sekunden), die von den ausgeführten Abfragen in der ausgewählten Datenbank im Zeitverlauf ausgeführt wird.

Sehen Sie sich die Grafik an und verwenden Sie die Filteroptionen, um diese Fragen zu untersuchen:
Welche Datenbank hat die Auslastung? Wählen Sie in der Liste „Datenbanken“ verschiedene Datenbanken aus, um die Datenbanken mit den höchsten Lasten zu finden. Um herauszufinden, welche Datenbank die höchste Last hat, können Sie sich auch das Diagramm CPU-Auslastung – gesamt für Datenbanken in der Google Cloud Console ansehen.

Ist die CPU-Auslastung hoch? Ist eine Spitze oder ein Anstieg im Zeitverlauf zu sehen? Wenn keine hohe CPU-Auslastung angezeigt wird, liegt das Problem nicht bei Ihren Abfragen.
Wie lange ist die CPU-Auslastung schon hoch? Gab es kürzlich eine Spitze oder ist sie seit einiger Zeit konstant hoch? Verwenden Sie die Bereichsauswahl, um verschiedene Zeiträume auszuwählen, um herauszufinden, wie lange das Problem besteht. Vergrößern Sie die Ansicht, um ein Zeitfenster zu sehen, in dem Spitzen bei der Abfragelast beobachtet werden. Zoomen Sie heraus, um bis zu einer Woche der Zeitachse anzuzeigen.
Wenn Sie eine Spitze oder einen Anstieg in der Grafik sehen, die der gesamten CPU-Auslastung der Instanz entspricht, liegt das höchstwahrscheinlich an einer oder mehreren teuren Abfragen. Als Nächstes können Sie die Fehlersuche vertiefen, indem Sie eine potenziell problematische Abfrage oder ein potenziell problematisches Anfrage-Tag identifizieren.
Potenziell problematische Abfrage oder potenziell problematisches Anfrage-Tag identifizieren
Um eine potenziell problematische Abfrage oder ein potenziell problematisches Anfrage-Tag zu identifizieren, sehen Sie sich den Abschnitt „Top-N-Abfragen“ an:

Hier sehen wir, dass die Abfrage mit dem Fingerabdruck 3216067328234137024 eine hohe CPU-Auslastung hat und problematisch sein kann.
Die Tabelle Top-N-Abfragen bietet eine Übersicht über die Abfragen, die im ausgewählten Zeitraum die meiste CPU-Zeit verbrauchen, sortiert von der höchsten zur niedrigsten. Die Anzahl der Top-N-Abfragen ist auf 100 begrenzt.
Für die Diagramme rufen wir die Daten aus der Tabelle mit den Top-N-Abfragestatistiken ab, die drei verschiedene Granularitäten hat: 1 Minute, 10 Minuten und 1 Stunde. Der Wert für jeden Datenpunkt in den Diagrammen stellt den Durchschnittswert über ein Intervall von einer Minute dar.
Wir empfehlen, Ihren SQL-Abfragen Tags hinzuzufügen . Mit der Tag-Kennzeichnung von Abfragen können Sie Probleme auf übergeordneten Konstrukten finden, z. B. mit der Geschäftslogik oder einem Mikrodienst.

Die Tabelle enthält die folgenden Attribute:
- Fingerabdruck: Hash des Anfrage-Tags oder, falls das Tag nicht vorhanden ist, ein Hash des Abfragetextes.
Abfrage oder Anfrage-Tag: Wenn der Abfrage ein Tag zugeordnet ist, wird das Anfrage-Tag angezeigt. Statistiken für mehrere Abfragen, die denselben Tag-String haben, werden in einer einzelnen Zeile gruppiert, wobei der Wert
REQUEST_TAGmit dem Tag-String übereinstimmt. Weitere Informationen zur Verwendung von Anfrage-Tags finden Sie unter Fehlerbehebung bei Anfrage- und Transaktions-Tags.Wenn die Abfrage kein zugeordnetes Tag hat, wird die SQL-Abfrage angezeigt, verkürzt auf ca. 64 KB. Bei Batch-DML werden die SQL-Anweisungen in einer einzigen Zeile zusammengefasst und mit einem Semikolon als Trennzeichen verkettet. Aufeinanderfolgende identische SQL-Texte werden vor dem Kürzen dedupliziert.
Abfragetyp: Gibt an, ob eine Abfrage eine
PARTITIONED_QUERYoderQUERYist. EinPARTITIONED_QUERYist eine Abfrage mit einempartitionToken, das von der PartitionQuery API abgerufen wurde. Alle anderen Abfragen und DML-Anweisungen werden durch den AbfragetypQUERYgekennzeichnet.CPU-Auslastung: CPU-Ressourcenverbrauch durch eine Abfrage als Prozentsatz von den gesamten CPU-Ressourcen, die von allen Abfragen verwendet werden, die in diesem Zeitraum in den Datenbanken ausgeführt werden. Wird auf einem horizontalen Balken mit einem Bereich von 0 bis 100 angezeigt.
Empfehlung: Spanner analysiert Ihre Abfragen, um festzustellen, ob sie von verbesserten Indexen profitieren können. Wenn ja, werden neue oder geänderte Indexe empfohlen, die die Abfrageleistung verbessern können. Weitere Informationen finden Sie unter Indexberater von Spanner verwenden.
CPU (%): CPU-Ressourcenverbrauch durch eine Abfrage als Prozentsatz der gesamten CPU-Ressourcen, die von allen Abfragen verwendet werden, die in diesem Zeitraum in den Datenbanken ausgeführt werden.
Anzahl der Ausführungen: Anzahl der von Spanner während des Intervalls registrierten Ausführungen einer Anfrage.
Durchschnittliche Latenz (ms): Durchschnittliche Zeit in Millisekunden für jede Abfrage ausführung in der Datenbank. Dieser Durchschnitt schließt die Codierungs- und Übertragungszeit für die Ergebnismenge sowie den Aufwand aus.
Durchschnittlich gescannte Zeilen: Durchschnittliche Anzahl der Zeilen, die von der Abfrage gescannt wurden, ausgenommen gelöschte Werte.
Durchschnittlich zurückgegebene Zeilen: Durchschnittliche Anzahl der Zeilen, die die Abfrage zurückgegeben hat.
Zurückgegebene Byte: Anzahl der von der Abfrage zurückgegebenen Datenbyte, ohne den Aufwand der Übertragungskodierung.
Mögliche Abweichungen zwischen den Diagrammen
Möglicherweise stellen Sie einige Abweichungen zwischen dem Diagramm Gesamte CPU-Auslastung (alle Abfragen) und dem Diagramm Gesamte CPU-Auslastung (pro Abfrage oder Anfrage-Tag) fest. Dafür kann es zwei Gründe geben:
Unterschiedliche Datenquellen: Die Cloud Monitoring-Daten, die das Diagramm „Gesamte CPU-Auslastung (alle Abfragen)“ speisen, sind in der Regel genauer, da sie jede Minute übertragen werden und eine Aufbewahrungsdauer von 45 Tagen haben. Andererseits werden die Daten der Systemtabelle, die das Diagramm „Gesamte CPU-Auslastung (pro Abfrage oder Anfrage-Tag)“ speisen, möglicherweise über 10 Minuten (oder 1 Stunde) gemittelt. In diesem Fall gehen möglicherweise Daten mit hoher Granularität verloren, die im Diagramm „Gesamte CPU-Auslastung (alle Abfragen)“ zu sehen sind.
Unterschiedliche Aggregationsfenster: Beide Diagramme haben unterschiedliche Aggregations fenster. Wenn wir beispielsweise ein Ereignis untersuchen, das älter als 6 Stunden ist, fragen wir die Tabelle
SPANNER_SYS.QUERY_STATS_TOTAL_10MINUTEab. In diesem Fall wird ein Ereignis, das um 10:01 Uhr auftritt, über 10 Minuten aggregiert und ist in der Systemtabelle mit dem Zeitstempel 10:10 Uhr vorhanden.
Der folgende Screenshot zeigt ein Beispiel für eine solche Abweichung.

Bestimmte Abfrage oder bestimmtes Anfrage-Tag analysieren
Um festzustellen, ob eine Abfrage oder ein Anfrage-Tag die Ursache für das Problem ist, klicken Sie auf die Abfrage oder das Anfrage-Tag, das vermeintlich die höchste Last hat oder mehr Zeit als die anderen benötigt. Sie können mehrere Abfragen und Anfrage-Tags gleichzeitig auswählen.
Sie können den Mauszeiger auf die Grafik für Abfragen auf der Zeitachse bewegen, um die CPU-Auslastung (in Sekunden) zu sehen.
Versuchen Sie, das Problem folgendermaßen einzugrenzen:
- Wie lange war die Last hoch? Ist sie nur jetzt hoch? Oder ist sie schon lange hoch? Ändern Sie die Zeiträume, um das Datum und die Uhrzeit zu ermitteln, zu der sich die Leistung der Abfrage verschlechterte.
- Gab es Spitzen bei der CPU-Auslastung? Sie können das Zeitfenster ändern, um die bisherige CPU-Auslastung für die Abfrage zu untersuchen.
- Wie hoch ist der Ressourcenverbrauch? Wie hängt er mit anderen Abfragen zusammen? Sehen Sie sich die Tabelle an und vergleichen Sie die Daten anderer Abfragen mit der ausgewählten Abfrage. Gibt es einen großen Unterschied?
Um zu bestätigen, dass die ausgewählte Abfrage zur hohen CPU-Auslastung beiträgt, können Sie die Details der spezifischen Abfrageform (oder des Anfrage-Tags) aufrufen und sie auf der Seite „Abfragedetails“ weiter analysieren.
Seite „Abfragedetails“ aufrufen
Wenn Sie die Details einer bestimmten Abfrageform oder eines bestimmten Anfrage-Tags in grafischer Form aufrufen möchten, klicken Sie auf den Fingerabdruck, der der Abfrage oder dem Anfrage-Tag zugeordnet ist. Die Seite „Abfragedetails“ wird geöffnet.

Auf der Seite „Abfragedetails“ sehen Sie die folgenden Informationen:
- Abfragedetailtext: SQL-Abfragetext, verkürzt auf ca. 64 KB. Statistiken für mehrere Abfragen, die denselben Tag-String haben, werden in einer einzelnen Zeile gruppiert, wobei der Wert REQUEST_TAG mit dem Tag-String übereinstimmt. In diesem Feld wird nur der Text einer dieser Abfragen angezeigt. Bei Batch-DML werden die SQL-Anweisungen in einer einzigen Zeile zusammengefasst und mit einem Semikolon als Trennzeichen verkettet. Aufeinanderfolgende identische SQL-Texte werden vor dem Kürzen dedupliziert.
- Die Werte der folgenden Felder:
- Anzahl der Ausführungen: Anzahl der von Spanner während des Intervalls registrierten Ausführungen einer Anfrage.
- Durchschnittliche CPU (ms): Durchschnittlicher CPU-Ressourcenverbrauch in Millisekunden durch eine Abfrage der CPU-Ressourcen der Instanz in einem Zeitraum.
- Durchschnittliche Latenz (ms): Durchschnittliche Zeit in Millisekunden für jede Abfrageausführung in der Datenbank. Dieser Durchschnitt schließt die Codierungs- und Übertragungszeit für die Ergebnismenge sowie den Aufwand aus.
- Durchschnittlich zurückgegebene Zeilen: Durchschnittliche Anzahl der Zeilen, die die Abfrage zurückgegeben hat.
- Durchschnittlich gescannte Zeilen: Durchschnittliche Anzahl der Zeilen, die von der Abfrage gescannt wurden, ausgenommen gelöschte Werte.
- Durchschnittliche Byte: Anzahl der von der Abfrage zurückgegebenen Datenbyte, ohne den Aufwand der Übertragungskodierung.
- Diagramm „Abfrageplanbeispiele“: Jeder Punkt im Diagramm stellt einen Beispielabfrageplan zu einem bestimmten Zeitpunkt und die spezifische Abfragelatenz dar. Klicken Sie auf einen der Punkte im Diagramm, um den Abfrageplan aufzurufen und die Schritte während der Abfrageausführung zu visualisieren. Hinweis: Abfragepläne werden für Abfragen mit partitionTokens, die von der PartitionQuery API abgerufen wurden, und partitionierte DML-Abfragen nicht unterstützt.
Abfrageplan-Visualisierung: Zeigt den ausgewählten Beispielabfrageplan. Spanner bietet die folgenden Layoutoptionen:
- Baumansicht: Die Baumansicht visualisiert den Abfrageplan als Diagramm, in dem jeder Knoten oder jede Karte einen Iterator darstellt, der Zeilen aus seinen Eingaben verarbeitet und Zeilen für sein übergeordnetes Element erzeugt. Sie können auf jeden Iterator klicken, um erweiterte Informationen zu erhalten.
Sequenzielle Ansicht: Die sequenzielle Ansicht visualisiert den Abfrageplan in einer hierarchischen Tabelle, in der jede Zeile einen Operator darstellt. Sie können auf jede Zeile klicken, um erweiterte Informationen zu erhalten.

Die Tabelle enthält die folgenden Spalten:
- Name: Der Name des Operators.
- Maschinengruppe: Die Maschinengruppe, in der dieser Operator ausgeführt wurde.
- Latenz: Die Zeit, die während der Ausführung des aktuellen Vorgangs verstrichen ist. Dies kann mehr als die CPU-Zeit sein, beispielsweise wenn der Operator auf Remote-Aufrufe gewartet hat oder eine Verzögerung im Dateisystem vorlag.
- Kumulative Latenz: Die Zeit, die während der Ausführung des gesamten Unterbaums verstrichen ist, der an diesem Operator beginnt. Die Zeit für die Planerstellung und anderer Aufwand sind nicht enthalten. Daher kann die kumulative Latenz kürzer als die Gesamtdauer der Abfrage sein.
- CPU-Zeit: CPU-Zeit für die gesamte Ausführung der Abfrage. Ohne Netzwerklatenz. Einige Teile der Abfrageausführung laufen möglicherweise parallel, sodass die CPU-Zeit länger als die gesamte verstrichene Zeit sein kann. Wenn eine Abfrage beispielsweise zehn parallele Vorgänge in 1 Millisekunde (ms) ausführt, beträgt die verstrichene Zeit 1 ms, die CPU-Zeit jedoch 10 ms.
- Zurückgegebene Zeilen: Die Anzahl der Zeilen, die vom Operator zurückgegeben wurden.
Grafik zur Abfragelatenz: Zeigt den Wert der Abfragelatenz für eine ausgewählte Abfrage über einen Zeitraum an. Außerdem wird die durchschnittliche Latenz angezeigt.
Diagramm zur CPU-Auslastung: Zeigt die CPU-Auslastung einer Abfrage, in Prozent über einen Zeitraum an. Außerdem wird die durchschnittliche CPU-Auslastung angezeigt.
Diagramm „Anzahl der Ausführungen/Fehler“: Zeigt die Anzahl der Ausführungen einer Abfrage über einen Zeitraum und die Anzahl der Fehler bei der Abfrageausführung.
Diagramm „Gescannte Zeilen“: Zeigt die Anzahl der Zeilen, die von der Abfrage über einen Zeitraum gescannt wurden.
Diagramm „Zurückgegebene Zeilen“: Zeigt die Anzahl der Zeilen, die die Abfrage über einen Zeitraum zurückgegeben hat.
Filter „Zeitraum“: Filtert die Abfragedetails nach Zeiträumen, z. B. Stunde, Tag oder einem benutzerdefinierten Zeitraum.
Für die Diagramme rufen wir die Daten aus der Tabelle mit den Top-N-Abfragestatistiken ab, die drei verschiedene Granularitäten hat: 1 Minute, 10 Minuten und 1 Stunde. Der Wert für jeden Datenpunkt in den Diagrammen stellt den Durchschnittswert über ein Intervall von einer Minute dar.
Im Audit-Log nach allen Ausführungen einer Abfrage suchen
Wenn Sie in
Cloud-Audit-Logs nach allen Ausführungen eines bestimmten Abfrage-Fingerabdrucks suchen möchten,
fragen Sie das Audit-Log ab und suchen Sie nach
query_fingerprint, das mit dem Feld Fingerprint in der Tabelle mit den Top-N-Abfragestatistiken
übereinstimmt. Weitere Informationen finden Sie in der Übersicht zu Logs abfragen und ansehen. Mit dieser Methode können Sie den Nutzer identifizieren, der die Abfrage initiiert hat.