Abfrageleistung analysieren

Auf dieser Seite wird beschrieben, wie Sie mit dem Query Insights-Dashboard Leistungsprobleme erkennen und analysieren.

Query Insights – Übersicht

Mit Query Insights können Sie Abfragen und DML-Anweisung erkennen und diagnostizieren Leistungsprobleme bei einer Spanner-Datenbank zu lösen. Sie unterstützt intuitive Monitoring und Diagnoseinformationen, die Ihnen helfen, zur Identifizierung der Ursache von Leistungsproblemen.

Mit Abfragestatistiken können Sie die Spanner-Abfrageleistung verbessern Gehen Sie dazu folgendermaßen vor:

  1. Prüfen Sie, ob ineffiziente Abfragen für eine hohe CPU-Auslastung verantwortlich sind.
  2. Potenziell problematische Abfrage oder potenziell problematisches Tag identifizieren
  3. 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 zum Aufrufen der Seite „Query Insights“ zu erhalten, bitten Sie Ihren Administrator, Ihnen folgende IAM-Rollen für die Instanz:

Die folgenden Berechtigungen in der Rolle 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 den 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 wird der Abfragelast und den ausgewählten Zeitraum. Der Abfragelast ist ein Messwert für 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:

  1. Wählen Sie im linken Navigationsbereich Abfragestatistiken aus. Die Das Dashboard für Abfragestatistiken wird geöffnet.
  2. Wählen Sie eine Datenbank aus der Liste Datenbanken aus. Das Dashboard zeigt die Informationen zum Abfrageaufbau für die Datenbank an.

Zu den Bereichen des Dashboards gehören:

  1. Datenbankliste: Filtert die Abfragelast für eine bestimmte Datenbank oder alle Datenbanken.
  2. Zeitraumfilter: Filtert die Abfragelast nach Zeitbereichen wie Stunden, Tage oder einen benutzerdefinierten Zeitraum.
  3. Diagramm zur CPU-Auslastung insgesamt (alle Abfragen): Zeigt die aggregierte Last an. aus allen Suchanfragen.
  4. Diagramm zur CPU-Gesamtauslastung (pro Abfrage oder Anfrage-Tag): Zeigt die CPU an. Auslastung pro Abfrage oder Anfrage-Tag.
  5. 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

Query Insights-Dashboard

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.

Gesamte CPU-Auslastung für alle Abfragen

In der Grafik finden Sie Antworten auf folgende Fragen:

  • Welche Datenbank hat die Auslastung? Wählen Sie andere Datenbanken aus aus: der Datenbankliste, 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:

    Datenbanklast

  • Ist die CPU-Auslastung hoch? Ist eine Spitze oder ein Anstieg im Zeitverlauf zu sehen? Wenn keine hohe CPU-Auslastung auftritt, nicht bei Ihren Abfragen liegt.

  • Wie lange ist die CPU-Auslastung hoch? Ist sie in letzter Zeit stark angestiegen schon seit einiger Zeit konstant hoch war? Verwenden Sie die Bereichsauswahl, um verschiedene Zeiträume auszuwählen, um herauszufinden, wie lange das Problem besteht. Heranzoomen, um ein Zeitfensters, in dem die Lastspitzen der Abfrage beobachtet werden. Zoomen Sie heraus, um bis zu einer Woche der Zeitachse anzuzeigen.

Wenn Sie im Diagramm eine Spitze oder eine Höhe sehen, die der Gesamtinstanz entspricht CPU-Auslastung, ist dies höchstwahrscheinlich auf eine oder teurere Abfragen zurückzuführen. Als Nächstes genauer mit der Fehlerbehebung befassen, indem er potenziell problematische Anfragen oder Anfrage-Tags identifiziert.

Potenziell problematische Suchanfrage oder Anfrage-Tag identifizieren

Sehen Sie sich den Abschnitt zu den Top-N-Abfragen an, um potenziell problematische Abfragen oder Anfrage-Tags zu identifizieren:

Top-N-Abfragen

Hier sehen wir, dass die Abfrage mit FPrint 6815864236081503267 eine hohe CPU-Auslastung hat und problematisch sein könnte.

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 Zahl der Top-N-Abfragen sind auf 100 begrenzt.

Für die Grafiken rufen wir die Daten aus der Tabelle mit den Top-N-Abfragestatistiken ab, die drei verschiedene Detaillierungsgrad: 1 Minute, 10 Minuten und 1 Stunde. Der Wert für jeden Datenpunkt in den Diagrammen steht für den Durchschnittswert. in einem Intervall von einer 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.

Tabelle mit Top-N-Abfragen

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 Abfrage ein Tag zugeordnet ist, Das Anfrage-Tag wird 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-Tags

    Wenn der Abfrage kein Tag zugeordnet ist, wird die SQL-Abfrage, gekürzt auf ca. 64 KB groß ist, wird 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 oder QUERY ist. PARTITIONED_QUERY ist eine Abfrage mit einer partitionToken, die aus dem PartitionQuery API Alle anderen Abfragen und DML-Anweisungen werden durch den Abfragetyp QUERY gekennzeichnet.

  • 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: die Häufigkeit, mit der Spanner die Abfrage während des das Intervall.

  • 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

Unter CPU-Gesamtauslastung (alle Abfragen) kann es zu Abweichungen kommen. und CPU-Auslastung insgesamt (pro Abfrage oder Anfrage-Tag). Es sind zwei Dinge, die zu diesem Szenario führen könnten:

  • 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 eingetreten ist, über einen Zeitraum von 10 Minuten aggregiert und die dem Zeitstempel 10:10 entsprechen.

Der folgende Screenshot zeigt ein Beispiel für eine solche Varianz.

Varianz zwischen den Diagrammen

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 dauern als die anderen. Sie können mehrere Abfragen auswählen und -Tag auf einmal anfordern.

Halten Sie für Abfragen auf der Zeitachse den Mauszeiger auf das Diagramm, ihre CPU-Auslastung (in Sekunden) kennen.

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 auf die bisherige CPU-Auslastung für die Abfrage 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 grafischer Form anzuzeigen, Klicken Sie auf den mit der Abfrage oder dem Anforderungs-Tag verknüpften FDRUCK. Die Seite "Abfragedetails" wird geöffnet.

Seite mit Abfragedetails

Auf der Seite „Abfragedetails“ werden die folgenden Informationen angezeigt:

  1. 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. Nur der Text von wird eine dieser Abfragen in diesem Feld angezeigt. Für Batch-DML wird das SQL-Dataset Anweisungen werden zu einer einzelnen Zeile zusammengefasst und mit einem Semikolon verkettet. Trennzeichen. Aufeinanderfolgende identische SQL-Texte werden vor dem Entfernen dedupliziert abgeschnitten.
  2. Die Werte der folgenden Felder: <ph type="x-smartling-placeholder">
      </ph>
    • Ausführungsanzahl: Anzahl der Male, die Spanner die Abfrage gesehen hat während des Intervalls.
    • Durchschn. CPU (ms): durchschnittlicher CPU-Ressourcenverbrauch in Millisekunden durch einen Abfrage der CPU-Ressourcen der Instanz in einem Zeitintervall.
    • 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.
    • Durchschn. Zurückgegebene Zeilen: Durchschnittliche Anzahl der Zeilen, die von der Abfrage zurückgegeben wurden
    • 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.
  3. 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 eine der folgenden Optionen: Punkte im Diagramm, um den Abfrageplan anzuzeigen und die durchgeführten Schritte zu visualisieren während der Abfrage. Hinweis: Abfragepläne werden nicht unterstützt für Abfragen mit partitionTokens aus der PartitionQuery API und Partitionierte DML-Abfragen
  4. 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. Klicken Sie auf die einzelnen erweiterte Informationen.
  5. 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.
  6. CPU-Auslastungsdiagramm: Zeigt die CPU-Auslastung nach einer Abfrage an. in Prozent über einen bestimmten Zeitraum. Außerdem wird die durchschnittliche CPU-Auslastung angezeigt.
  7. Grafik zur Ausführungsanzahl/fehlgeschlagene Grafik: Zeigt die Ausführungsanzahl einer Abfrage über einen bestimmten Zeitraum und die Anzahl der fehlgeschlagenen Abfrageausführungen.
  8. Diagramm für gescannte Zeilen: Zeigt die Anzahl der Zeilen an, Abfrage, die über einen bestimmten Zeitraum gescannt wurde.
  9. Diagramm für zurückgegebene Zeilen: Zeigt die Anzahl der Zeilen an, die die über einen bestimmten Zeitraum zurückgegebene Abfrage.
  10. 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 jede Datenpunkt in den Diagrammen stellt den Durchschnittswert über ein Intervall von eins dar Minute.