Auf dieser Seite wird beschrieben, wie Sie mit dem Query Insights-Dashboard Spanner-Leistungsprobleme zu erkennen und zu analysieren.
Query Insights – Übersicht
Mit Query Insights können Sie Abfragen und
DML-Anweisung (INSERT
, UPDATE
und DELETE
)
Leistungsprobleme bei einer Spanner-Datenbank zu lösen. Unterstützt
intuitive Überwachung und Diagnoseinformationen, die Ihnen helfen,
bis hin zur Erkennung, um die Ursache
von Leistungsproblemen zu ermitteln.
Mit Abfragestatistiken können Sie Spanner-Abfragen verbessern mit den folgenden Schritten:
- Prüfen Sie, ob ineffiziente Abfragen für eine hohe CPU-Auslastung verantwortlich sind.
- Potenziell problematische Abfrage oder potenziell problematisches Tag identifizieren
- Analysieren Sie die Abfrage oder das Anfrage-Tag, um Probleme zu identifizieren.
Abfragestatistiken sind sowohl für einzelne als auch für mehrere Regionen verfügbar Konfigurationen.
Preise
Für Query Insights fallen keine zusätzlichen Kosten an.
Datenaufbewahrung
Die maximale Aufbewahrungsdauer für Abfragestatistiken beträgt 30 Tage.
Für das Diagramm CPU-Auslastung insgesamt (pro Abfrage oder Anfrage-Tag) sind die Daten
aus den SPANNER_SYS.QUERY_STATS_TOP_*
-Tabellen entnommen, die ein Maximum an
30 Tage aufbewahrt werden. Siehe Datenaufbewahrung
um mehr zu erfahren.
Erforderliche Rollen
Sie benötigen unterschiedliche IAM-Rollen und -Berechtigungen, je nachdem, wenn Sie IAM-Nutzer oder Nutzer mit detaillierter Zugriffssteuerung sind.
Nutzer von Identity and Access Management (IAM)
Um die Berechtigungen zu erhalten, die Sie zum Aufrufen der Seite „Query Insights“ benötigen, bitten Sie Ihren Administrator, Ihnen folgende IAM-Rollen für die Instanz:
-
Cloud Spanner-Betrachter (
roles/spanner.viewer
) -
Cloud Spanner-Datenbank-Leser (
roles/spanner.databaseReader
)
Die folgenden Berechtigungen in der Cloud Spanner-Datenbank-Leser(
roles/spanner.databaseReader
)
sind erforderlich, um die Seite „Query Insights“ aufzurufen:
spanner.databases.beginReadOnlyTransaction
spanner.databases.select
spanner.sessions.create
Nutzer mit detaillierter Zugriffssteuerung
Wenn Sie mit einer detaillierten Zugriffssteuerung arbeiten, achten Sie auf Folgendes:
- Sie haben die Rolle Cloud Spanner-Betrachter (
roles/spanner.viewer
). - Sie haben detaillierte Berechtigungen für die Zugriffssteuerung und erhalten die
spanner_sys_reader
Systemrolle oder eine der Mitgliederrollen darauf zugreifen. - Wählen Sie die Rolle
spanner_sys_reader
oder eine Mitgliederrolle als aktuelle Systemrolle aus auf der Übersichtsseite der Datenbank.
Weitere Informationen finden Sie unter Über die detaillierte Zugriffssteuerung und Detailgenaue Rollen für das Zugriffssteuerungssystem.
Das Query Insights-Dashboard
Im Dashboard für Abfragestatistiken sehen Sie den Abfragelast basierend auf dem und den ausgewählten Zeitraum. Die Abfragelast ist ein Maß für die Gesamt-CPU-Auslastung aller Abfragen in der Instanz im ausgewählten Zeitraum. Das Dashboard bietet eine Reihe von Filtern, mit denen Sie die Abfrage laden.
So rufen Sie das Query Insights-Dashboard für eine Datenbank auf:
- Wählen Sie im linken Navigationsbereich Abfragestatistiken aus. Die Das Dashboard für Abfragestatistiken wird geöffnet.
- Wählen Sie eine Datenbank aus der Liste Datenbanken aus. Das Dashboard enthält Informationen zur Abfragelast der Datenbank.
Zu den Bereichen des Dashboards gehören:
- Datenbankliste: Filtert die Abfragelast für eine bestimmte Datenbank oder alle Datenbanken.
- Zeitraumfilter: Filtert die Abfragelast nach Zeitbereichen wie Stunden, Tage oder einen benutzerdefinierten Zeitraum.
- Diagramm „Gesamte CPU-Auslastung (alle Abfragen)“: Hier sehen Sie die aggregierte Last aller Abfragen.
- Diagramm zur CPU-Gesamtauslastung (pro Abfrage oder Anfrage-Tag): Zeigt die CPU an. Auslastung durch jede Abfrage oder jedes Anfrage-Tag.
- Tabelle mit Top-N-Abfragen und -Tags: Zeigt die Liste der Top-Abfragen und -Anfragen an. die nach CPU-Auslastung sortiert sind. Weitere Informationen finden Sie unter Potenziell problematische Suchanfragen oder Tags identifizieren
Dashboard-Leistung
Verwenden Sie Abfrageparameter oder Abfragen mit Tags versehen um die Leistung von Query Insights zu optimieren. Wenn Sie keine oder Tags hinzufügen, werden möglicherweise zu viele Ergebnisse zurückgegeben. Dies kann dazu führen, die Tabelle mit den Top-N-Abfragen und -Tags nicht ordnungsgemäß geladen wird.
Prüfen, ob ineffiziente Abfragen für eine hohe CPU-Auslastung verantwortlich sind
Die CPU-Gesamtauslastung ist ein Maß für die Arbeit (in CPU-Sekunden), die die in der ausgewählten Datenbank im Laufe der Zeit ausführen.
In der Grafik finden Sie Antworten auf folgende Fragen:
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 Auslastung hat, können Sie auch die Diagramm CPU-Auslastung – Gesamt für Datenbanken in den Google Cloud Console:
Ist die CPU-Auslastung hoch? Ist eine Spitze oder ein Anstieg im Zeitverlauf zu sehen? Wenn die CPU-Auslastung nicht hoch ist, liegt das Problem nicht bei Ihren Abfragen.
Wie lange ist die CPU-Auslastung hoch? Ist sie in letzter Zeit stark angestiegen schon seit einiger Zeit konstant hoch war? Wählen Sie mit der Bereichsauswahl Zeiträume zu vergleichen, um herauszufinden, wie lange das Problem bereits besteht. Heranzoomen 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 in der Grafik einen Anstieg oder eine Erhöhung sehen, die der CPU-Auslastung der Instanz insgesamt entspricht, liegt das höchstwahrscheinlich an einer oder mehreren kostenintensiven Abfragen. Als Nächstes können Sie in die Fehlerbehebung eintauchen, indem Sie ein ein potenziell problematisches Anfrage- oder Anfrage-Tag.
Potenziell problematische Suchanfrage oder Anfrage-Tag identifizieren
Im Bereich „TopN-Abfragen“ können Sie potenziell problematische Abfragen oder Anfrage-Tags identifizieren:
Hier sehen wir, dass die Abfrage mit FPrint 6815864236081503267
eine hohe CPU-Leistung hat.
Auslastung und könnte problematisch sein.
Die Tabelle Top-N-Abfragen bietet einen Überblick über die Abfragen, die die meisten CPU im ausgewählten Zeitfenster, sortiert vom höchsten zum niedrigsten Wert. Die ist die Anzahl der Top-N-Abfragen auf 100 begrenzt.
Für die Grafiken rufen wir die Daten aus der Tabelle mit den Top-N-Abfragestatistiken ab, gibt es drei verschiedene Detaillierungsgrade: 1 Minute, 10 Minuten und 1 Stunde. Der Wert für jede Datenpunkt in den Diagrammen stellt den Durchschnittswert über ein Intervall von eins dar Minute.
Als Best Practice wird empfohlen, SQL-Abfragen Tags hinzuzufügen. Mit dem Taggen von Abfragen können Sie Probleme in übergeordneten Konstrukten finden, z. B. oder einen Mikrodienst.
Die Tabelle enthält die folgenden Attribute:
- FPRINT: Hash des Anfrage-Tags, falls vorhanden; Andernfalls wird der Hashwert des Abfrage.
Abfrage- oder Anfrage-Tag: Wenn der Suchanfrage ein Tag zugewiesen ist, wird das Anfrage-Tag angezeigt. Statistiken für mehrere Suchanfragen mit demselben Tag werden in einer einzelnen Zeile gruppiert, wobei der
REQUEST_TAG
-Wert der Tag-String. Weitere Informationen zur Verwendung von Anfrage-Tags finden Sie unter Fehlerbehebung mit Anfrage- und Transaktions-TagsWenn der Abfrage kein Tag zugewiesen ist, wird die SQL-Abfrage, die auf etwa 64 KB gekürzt wurde, angezeigt. Bei Batch-DML werden die SQL-Anweisungen vereinfacht. in einer Zeile zusammengefasst und mithilfe eines Semikolon-Trennzeichens verkettet werden. Fortlaufend werden identische SQL-Texte vor dem Abschneiden dedupliziert.
Abfragetyp: Gibt an, ob eine Abfrage vom Typ
PARTITIONED_QUERY
oderQUERY
ist.PARTITIONED_QUERY
ist eine Abfrage mit einempartitionToken
, der aus dem PartitionQuery API Alle anderen Abfragen und DML-Anweisungen sind durch die AbfrageQUERY
gekennzeichnet. Typ.CPU-Auslastung: Der CPU-Ressourcenverbrauch durch eine Abfrage als Prozentsatz von die gesamten CPU-Ressourcen, die von allen Abfragen verwendet werden, die auf den Datenbanken in das Zeitintervall, dargestellt auf einem horizontalen Balken mit einem Bereich von 0 bis 100.
CPU (%): Der CPU-Ressourcenverbrauch durch eine Abfrage als Prozentsatz der Gesamtzahl der CPU-Ressourcen, die von allen Abfragen verwendet werden, die in den Datenbanken ausgeführt werden Zeitintervall.
Ausführungsanzahl: Häufigkeit, mit der die Abfrage während des Intervalls von Spanner verarbeitet wurde.
Durchschn. Latenz (ms): durchschnittliche Dauer der einzelnen Abfragen in Mikrosekunden in der Datenbank ausgeführt werden. Dieser Durchschnitt enthält keine Codierung und Übertragungszeit für die Ergebnismenge sowie Aufwand.
Durchschn. gescannte Zeilen: Durchschnittliche Anzahl der von der Abfrage gescannten Zeilen ohne Ausnahme gelöschte Werte.
Durchschn. zurückgegebene Zeilen: Durchschnittliche Anzahl der Zeilen, die von der Abfrage zurückgegeben wurden
Zurückgegebene Byte: Anzahl der Datenbyte, die von der Abfrage zurückgegeben wurden, ohne Codierungsaufwand für die Übertragung.
Mögliche Abweichung zwischen den Grafiken
Sie werden möglicherweise Abweichungen zwischen den Diagramm CPU-Auslastung insgesamt (alle Abfragen) und den Diagramm Gesamte CPU-Auslastung (pro Abfrage oder Anfrage-Tag). Es gibt zwei Dinge, die zu diesem Szenario führen könnte:
Verschiedene Datenquellen: Die Cloud Monitoring-Daten, die die Die Grafik zur CPU-Gesamtauslastung (alle Abfragen) ist normalerweise genauer, und hat eine Aufbewahrungsdauer von 45 Tagen. Auf der anderen die Systemtabellendaten, die die CPU-Gesamtauslastung (pro Abfrage oder Anfrage-Tag) über einen Zeitraum von 10 Minuten (oder 1 Stunde) gemittelt werden. sehr detaillierte Daten im Feld „CPU Auslastung“ (alle Suchanfragen) angezeigt.
Verschiedene Aggregationsfenster: Beide Diagramme haben unterschiedliche Aggregationen. Fenster. Bei der Untersuchung eines Ereignisses, das älter als sechs Stunden ist, die Tabelle
SPANNER_SYS.QUERY_STATS_TOTAL_10MINUTE
abfragen. In diesem Fall das um 10:01 Uhr auftritt, über 10 Minuten aggregiert und die dem Zeitstempel 10:10 entsprechen.
Der folgende Screenshot zeigt ein Beispiel für eine solche Abweichung.
Bestimmte Suchanfrage oder Anfrage-Tag analysieren
Um zu ermitteln, ob eine Suchanfrage oder ein Anfrage-Tag die Ursache des Problems ist, klicken Sie auf das Abfrage- oder Anfrage-Tag, das so aussieht, als hätte es die höchste Last oder ist länger dauert als die anderen. Sie können mehrere Abfragen und Tags gleichzeitig auswählen.
Wenn Sie den Mauszeiger auf das Diagramm für Abfragen im Zeitverlauf bewegen, sehen Sie die CPU-Auslastung (in Sekunden).
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 finden, an denen der hatte eine schlechte Leistung.
- 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? In welchem Zusammenhang stehen sie mit anderen Suchanfragen? Vergleichen Sie in der Tabelle 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 jeweiligen Abfrageform (oder des Anforderungs-Tags) aufschlüsseln. und auf der Seite "Query Details" (Abfragedetails) weiter zu analysieren.
Seite "Abfragedetails" aufrufen
Um die Details einer bestimmten Abfrageform oder eines bestimmten Anforderungs-Tags in einem grafischen klicken Sie auf den mit der Abfrage oder dem Anforderungs-Tag verknüpften FDRUCK. Die Seite "Abfragedetails" wird geöffnet.
Auf der Seite „Abfragedetails“ werden die folgenden Informationen angezeigt:
- Text der Abfragedetails: SQL-Abfragetext, gekürzt auf ungefähr 64 KB Statistiken für mehrere Abfragen mit derselben Tag-Zeichenfolge werden in eine einzelne Zeile mit dem REQUEST_TAG, der diesem Tag-String entspricht. In diesem Feld wird nur der Text einer dieser Abfragen angezeigt. Bei der Batch-DML werden die SQL-Anweisungen in eine einzige Zeile umgewandelt und mit einem Semikolon als Trennzeichen zusammengefügt. Aufeinanderfolgende identische SQL-Texte werden vor dem Duplikat dedupliziert abgeschnitten.
- Die Werte der folgenden Felder:
- Ausführungsanzahl: Anzahl der Male, die Spanner die Abfrage gesehen hat während des Intervalls.
- Durchn. CPU (ms): Durchschnittliche CPU-Ressourcennutzung in Millisekunden durch eine Abfrage der CPU-Ressourcen der Instanz in einem bestimmten Zeitraum.
- Durchschn. Latenz (ms): durchschnittliche Dauer in Millisekunden für die einzelnen in der Datenbank auszuführen. Dieser Durchschnitt enthält keine Codierung und Übertragungszeit für Ergebnismenge und Aufwand.
- Durchschnittliche zurückgegebene Zeilen: Die durchschnittliche Anzahl der Zeilen, die die Abfrage zurückgegeben hat.
- Durchschn. Gescannte Zeilen: Durchschnittliche Anzahl der von der Abfrage gescannten Zeilen wobei gelöschte Werte ausgeschlossen werden.
- Durchschn. bytes: Anzahl der Datenbyte, die von der Abfrage zurückgegeben wurden, ohne Codierungsaufwand für die Übertragung.
- Beispieldiagramm für Abfragepläne: Jeder Punkt im Diagramm steht für eine Stichprobenerhebung. Abfrageplan zu einem bestimmten Zeitpunkt und seine spezifische Abfragelatenz. 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 nicht für Abfragen mit Partitionstokens unterstützt, die über die PartitionQuery API abgerufen wurden, und für partitionierte DML-Abfragen.
- Visualisierung des Abfrageplans: Zeigt den ausgewählten Abfrageplan mit Stichproben an. Jeder Knoten, oder Karte darstellen, stellt das Diagramm einen Iterator dar, der Zeilen aus seiner und erzeugt Zeilen für das übergeordnete Element. Wenn Sie auf einen Iterator klicken, werden erweiterte Informationen angezeigt.
- Diagramm zur Abfragelatenz: Zeigt den Wert der Abfragelatenz für eine ausgewählte Abfrage für einen bestimmten Zeitraum. Außerdem wird die durchschnittliche Latenz angezeigt.
- Diagramm „CPU-Auslastung“: Zeigt die CPU-Auslastung durch eine Abfrage in Prozentsätzen über einen bestimmten Zeitraum an. Außerdem wird die durchschnittliche Auslastung.
- Grafik zur Ausführungsanzahl/fehlgeschlagene Grafik: Zeigt die Ausführungsanzahl einer Abfrage über einen bestimmten Zeitraum und die Anzahl der fehlgeschlagenen Abfrageausführungen.
- Diagramm für gescannte Zeilen: Zeigt die Anzahl der Zeilen an, Abfrage, die über einen bestimmten Zeitraum gescannt wurde.
- Diagramm „Zurückgegebene Zeilen“: Die Anzahl der Zeilen, die die Abfrage in einem bestimmten Zeitraum zurückgegeben hat.
- Zeitraumfilter: Filtert Abfragedetails nach Zeitbereichen wie Stunde, Tag oder einen benutzerdefinierten Zeitraum festlegen.
Für die Grafiken rufen wir die Daten aus der Tabelle mit den Top-N-Abfragestatistiken ab, gibt es drei verschiedene Detaillierungsgrade: 1 Minute, 10 Minuten und 1 Stunde. Der Wert für jeden Datenpunkt in den Diagrammen entspricht dem Mittelwert über einen Zeitraum von einer Minute.