Auf dieser Seite werden die wichtigsten Komponenten des Abfrageplan-Visualisierers beschrieben.
Mit der Abfrageplan-Visualisierung in der Google Cloud Console können Sie die Struktur des Ausführungsplans nachvollziehen, den Spanner zum Bewerten einer Abfrage auswählt.
Der Visualizer stellt den Plan als visuelles Diagramm dar. So können Sie leichter analysieren, wie Spanner Ihre Abfragen ausführt, und potenzielle Leistungsengpässe identifizieren. Mit der Visualisierung des Abfrageplans können Sie Folgendes tun:
- Langsame Abfragen debuggen: Ermitteln Sie, welcher Teil des Abfrageplans die meiste Zeit oder die meisten Ressourcen in Anspruch nimmt.
- Optimierungen validieren: Vergleichen Sie Abfragepläne vor und nach Änderungen (z. B. Hinzufügen eines Index oder Umschreiben eines Joins), um Verbesserungen zu überprüfen.
- Abfrageverhalten verstehen: Erfahren Sie, wie Spanner komplexe SQL-Anweisungen verarbeitet, einschließlich Joins, Aggregationen und verteilter Vorgänge.
Vorteile der Visualisierung des Abfrageplans
Abfragepläne können komplex sein. Der Visualizer vereinfacht die Analyse von Plänen durch die folgenden Funktionen:
- Grafische Darstellung: Zeigt den Datenfluss von Tabellen und Indexen über verschiedene Operatoren bis zum Endergebnis.
- Leistungsstatistiken: Identifiziert teure Operatoren mit visuellen Hinweisen auf hohe Latenz und CPU-Auslastung.
- Visualisierung der Zeilenanzahl: Zeigt das Datenvolumen bei jedem Schritt mit Indikatoren für die Linienstärke an.
- Detaillierte Statistiken: Hier finden Sie spezifische Laufzeitstatistiken für jeden Operator.
Auf die Visualisierung des Abfrageplans zugreifen
Sie können den Abfrageplan-Visualizer in der Google Cloud Console auf eine der folgenden Arten aufrufen:
- Spanner Studio: Generieren Sie einen Live-On-Demand-Abfrageplan, während Sie Abfragen schreiben und testen.
- Query Insights: Hier können Sie sich historische, im Laufe der Zeit aus Produktionsarbeitslasten erfasste Beispielabfragepläne ansehen.
On-Demand-Plan in Spanner Studio ansehen
So rufen Sie einen Abfrageplan für eine Abfrage in Spanner Studio on demand auf:
Rufen Sie in der Google Cloud Console die Spanner-Seite Instanzen auf.
Klicken Sie auf den Namen der Instanz, die die Datenbank enthält, die Sie abfragen möchten.
Klicken Sie in der Liste Datenbanken auf den Namen Ihrer Datenbank.
Klicken Sie im Navigationsmenü auf Spanner Studio.
Geben Sie im Editorbereich Ihre SQL-Abfrage ein.
Klicken Sie auf Ausführen.
Klicken Sie auf den Tab Erläuterung.
Beispielplan in Query Insights ansehen
So rufen Sie einen historischen, stichprobenartigen Abfrageplan in Query Insights auf:
Rufen Sie in der Google Cloud Console die Spanner-Seite Instanzen auf.
Klicken Sie auf den Namen der Instanz, die die Datenbank enthält, die Sie untersuchen möchten.
Klicken Sie im Navigationsmenü auf Query Insights.
Wählen Sie die Datenbank und den Zeitraum aus, die Sie analysieren möchten.
Klicken Sie in der Tabelle Top-N-Abfragen auf die Abfrage oder das Anfrage-Tag, das Sie prüfen möchten.
Klicken Sie im Diagramm Beispiele für Abfragepläne auf einen Beispielpunkt, der eine Abfrageausführung darstellt.
Sehen Sie sich im Abschnitt Visualisierung für Abfragepläne den visuellen Ausführungsplan an.
Visualizer verwenden
Der Visualizer zeigt den Abfrageplan als gerichteten azyklischen Graphen (DAG) an.

Die Visualisierung des Abfrageplans kann je nach ausgeführter Abfrage groß sein. Wenn Sie Details ausblenden oder einblenden möchten, klicken Sie auf die Ansichtsauswahl Maximiert/Kompakt. Verwenden Sie das Zoom-Steuerelement, um heran- oder herauszuzoomen.
Die Visualizer-Oberfläche bietet die folgenden Informationsbereiche:
Klicken Sie auf JSON herunterladen, um den visualisierten Abfrageplan herunterzuladen. Wenn Sie den Abfrageplan zu einem späteren Zeitpunkt aufrufen möchten, können Sie das heruntergeladene JSON-Profil wieder in Spanner Studio importieren. Wenn Sie Leistungsprobleme beheben müssen, geben Sie die JSON-Datei an das Spanner-Supportteam weiter.
Azyklischer Graph des Abfrageplans
Die Logik, die Spanner zum Ausführen der Abfrage verwendet, wird als DAG angezeigt. Die Grafik zeigt den Datenfluss von unten nach oben. Tabellen und Indexe werden unten angezeigt, die endgültige Abfrageausgabe oben.
Jeder Knoten im Diagramm wird durch eine Karte dargestellt. Jede Karte stellt einen Iterator dar, der Zeilen aus seinen Eingaben verarbeitet und Zeilen für sein übergeordnetes Element erzeugt.
Die Linien, die die Karten verbinden, stellen den Fluss der Zeilen zwischen Iteratoren dar. Die Linienstärke gibt die relative Anzahl der übergebenen Zeilen an. Dickere Linien weisen auf mehr Zeilen hin.
Jede Karte im Diagramm enthält die folgenden Informationen:
- Iteratorname: der Name des Iterators.
- Laufzeitstatistiken: die Anzahl der zurückgegebenen Zeilen, die Latenz und die CPU-Auslastung.
Klicken Sie auf eine Karte, um weitere Informationen zur Latenz, CPU-Nutzung, zurückgegebenen Zeilen, Ausführungsanzahl und Anzahl der Maschinengruppen aufzurufen.
Weitere Informationen zu Operatoren finden Sie unter Operatoren für die Abfrageausführung.
Spanner-Abfragen rufen häufig Daten aus mehreren Datenbank-Splits ab. Eine Maschinengruppe stellt eine Reihe zusammenhängender Operatoren für die Abfrageausführung dar, die zusammen für eine Reihe von Aufteilungen ausgeführt werden. Innerhalb einer einzelnen Maschinengruppe werden Operatoren sequenziell von unten nach oben ausgeführt, während verschiedene Maschinengruppen parallel ausgeführt werden. Wenn Daten zwischen Splits über die Grenzen von Maschinengruppen hinweg verschoben werden, werden sie über Remote-Prozeduraufrufe (RPCs) übertragen.
Weitere Informationen zu Splits finden Sie unter Datenbank-Splits.
Mit dem Visualizer können Sie zwischen logischer und physischer Verteilung unterscheiden:
- Logische Grenzen: Karten mit dem Label Verteilt geben an, wo der Abfrageplaner die Abfragelogik aufgeteilt hat.
- Physische Verteilung: Die Farben der Maschinengruppen im Diagramm stellen die tatsächliche physische Ausführung dar, die aus Laufzeitstatistiken abgeleitet wird.
Physische Grenzen stimmen oft mit logischen verteilten Operatoren überein, können sich aber je nach Aufteilung auf die Server unterscheiden.
Abfragezusammenfassung
Im Bereich Abfragezusammenfassung werden die folgenden allgemeinen Ausführungsmesswerte angezeigt und potenzielle Engpässe in der Abfrage hervorgehoben:
- Verstrichene Gesamtzeit: Die Gesamtzeit, die für die Ausführung der Abfrage von Anfang bis Ende benötigt wurde.
- CPU-Zeit: Die kumulative CPU-Zeit, die von allen Threads und Servern verbraucht wird, die die Abfrage verarbeiten.
- Erstellungszeit des Plans: Die Zeit, die der Abfrage-Compiler und der Optimierer für die Erstellung des Ausführungsplans benötigt haben.
- Verzögerung in der Serverwarteschlange: Die Dauer, die die Abfrage in Serverwarteschlangen gewartet hat, bevor die Verarbeitung begann.
- Zurückgegebene Zeilen: Die Gesamtzahl der Zeilen, die im endgültigen Abfrageergebnis zurückgegeben wurden.
- Gescannte Zeilen: Die Gesamtzahl der Zeilen, die aus dem Speicher in allen gescannten Tabellen und Indexen gelesen wurden.
- Remote-Aufrufe: Die Gesamtzahl der RPCs, die zwischen Splits oder Maschinengruppen ausgeführt wurden.
- Version der Abfrageoptimierung: Die Version der Spanner-Abfrageoptimierung, die zum Kompilieren des Plans verwendet wurde.
- Statistikpaket: Das Optimierer-Statistikpaket, das für die kostenbasierte Optimierung verwendet wird.
Auffällige Operatoren
Im Abschnitt Wichtige Operatoren werden die ressourcenintensivsten Iteratoren im Abfrageplan hervorgehoben:
- Höchste Latenz: der Operator mit der längsten Ausführungsdauer.
- Höchste CPU-Zeit: Der Operator, der die meiste CPU-Zeit verbraucht hat.
- Höchste Zeilenzahl: Der Operator, der die meisten Zeilen verarbeitet oder zurückgegeben hat.
Zeitplan für die Abfrageausführung
Auf dem Tab Zeitplan für die Abfrageausführung wird ein zeitbasiertes Diagramm angezeigt, das zeigt, wie lange jede Maschinengruppe ihren Teil der Abfrage ausführt. Eine Maschinengruppe wird möglicherweise nicht während der gesamten Abfragedauer oder mehrmals ausgeführt. In der Zeitachse werden jedoch nur der Beginn der ersten Ausführung und das Ende der letzten Ausführung angezeigt.
Visuelle Hinweise zur Leistung
In der Visualisierung werden die folgenden Farben und Symbole verwendet, um Probleme zu erkennen:
- Rote Balken: Geben den Prozentsatz der Latenz oder CPU-Zeit an, die von diesem Operator im Verhältnis zur gesamten Abfrage verbraucht wird.
- Warndreiecke: weisen darauf hin, dass ein vollständiger Tabellenscan durchgeführt wurde. Solche Scans weisen oft auf eine Möglichkeit hin, die Abfrage zu optimieren, z. B. durch Hinzufügen eines sekundären Index.
- Farben für Maschinengruppen: Unterscheiden Sie Maschinengruppen und heben Sie Übergänge zwischen Gruppen hervor. Diese Übergänge erfordern eine Remote-Ausführung auf verschiedenen Maschinen, was zu Serialisierungs- und Netzwerk-Overhead führt. In der Zeitachse der Abfrageausführung werden diese Maschinengruppenfarben ebenfalls angezeigt.
Nächste Schritte
- Abfrage mit der Abfrageplan-Visualisierung optimieren
- Spezifische Operatoren für die Abfrageausführung
- Abfrageausführungspläne im Detail verstehen