Auf dieser Seite werden die Operatoren beschrieben, die in Abfrageausführungsplänen von Spanner verwendet werden. Informationen zum Abrufen eines Ausführungsplans für eine bestimmte Abfrage mit der Google Cloud Console finden Sie unter So werden Abfragen von Spanner ausgeführt.
Ausführungspläne werden für Datenbanken im GoogleSQL-Dialekt und Datenbanken im PostgreSQL-Dialekt unterstützt.
SQL-Konstrukte Operatoren für die Abfrageausführung zuordnen
Die genaue Zuordnung zwischen SQL-Konstrukten und Operatoren für die Ausführung von Abfragen hängt von der Abfrageoptimierung ab. In der folgenden Tabelle sind einige gängige Zuordnungen aufgeführt:
| SQL | Operator für die Abfrageausführung |
|---|---|
| Tabellenreferenz | Table Scan, Index Scan |
WHERE |
Filter Scan, Filter |
GROUP BY |
Aggregate |
Skalarfunktion (z. B. ISNULL) |
Computing |
Aggregatfunktion (z. B. SUM) |
Aggregate |
JOIN |
Beliebiger Join-Operator (siehe Joins) |
| Unterabfrage | Skalare oder Array-Teilabfrage |
LIMIT |
Limit, Sortierlimit |
ORDER BY |
Sortieren, Sortierlimit |
Operatoren für die Abfrageausführung
In diesem Abschnitt werden alle Operatoren für die Abfrageausführung aufgeführt, aus denen ein Abfrageausführungsplan in Spanner bestehen kann.
Blattoperatoren
Operatoren ohne untergeordnete Elemente.
| Name | Zusammenfassung |
|---|---|
| Array Unnest | Vereinfacht ein Eingabe-Array so, dass es in Zeilen von Elementen vorliegt. |
| Generate Relation | Gibt null oder mehr Zeilen zurück. |
| Unit Relation | Gibt eine Zeile zurück. |
| Empty Relation | Gibt keine Zeilen zurück. |
| Scan | Scannt eine Zeilenquelle und gibt die Zeilen zurück. |
| Filter Scan | Gemeinsam mit dem Scan reduziert er die Anzahl der aus der Datenbank gelesenen Zeilen. |
Unäre Operatoren
Operatoren mit nur einem untergeordneten relationalen Element.
| Name | Zusammenfassung |
|---|---|
| Aggregate | Implementiert GROUP BY-SQL-Anweisungen und Aggregatfunktionen. |
| Apply Mutations | Wendet die Mutationen aus einer DML-Anweisung (Data Manipulation Language) auf die Tabelle an. |
| Create Batch | Erstellt eine Batchsequenz seiner Eingabezeilen. |
| Computing | Er erzeugt eine Ausgabe, indem er die Eingabezeilen ausliest und eine oder mehrere zusätzliche Spalten hinzufügt, die über skalare Ausdrücke berechnet werden. |
| Compute Struct | Erstellt eine Variable für eine Struktur, die Felder für alle Eingabespalten enthält. |
| DataBlockToRowAdapter | Passt eine batchorientierte Ausführungsmethode an eine zeilenorientierte Ausführungsmethode an. |
| Filter | Liest alle Zeilen der Eingabe aus, wendet ein skalares Prädikat auf jede Zeile an und gibt dann nur die Zeilen zurück, die das Prädikat erfüllen. |
| Limit | Beschränkt die Anzahl der zurückgegebenen Zeilen. |
| Local Split Union | Sucht nach Tabellensplits, die auf dem lokalen Server gespeichert sind, führt für jeden Split eine Unterabfrage aus und erstellt dann eine UNION, in der alle Ergebnisse kombiniert werden. |
| Zufalls-ID-Zuweisung | Er erzeugt eine Ausgabe, indem er die Eingabezeilen liest und jeder Zeile eine Zufallszahl hinzufügt. |
| RowToDataBlockAdapter | Passt eine zeilenorientierte Ausführungsmethode an eine batchorientierte Ausführungsmethode an. |
| Serialize Result | Serialisiert jede Zeile des Endergebnisses der Abfrage, um sie an den Client zurückzugeben. |
| Sort | Liest die Eingabezeilen aus, sortiert sie nach Spalten und gibt dann die sortierten Ergebnisse zurück. |
| Tabellenwertfunktion (Table-valued function, TVF) | Erzeugt eine Ausgabe, indem die Eingabezeilen gelesen und die angegebene Funktion angewendet wird. |
| Union Input | Gibt Ergebnisse an einen UNION ALL-Operator zurück. |
Binäre Operatoren
Operatoren mit zwei untergeordneten relationalen Elementen.
| Name | Zusammenfassung |
|---|---|
| Teilnahme beantragen | Wendet jede Zeile auf der Eingabeseite mithilfe einer Apply-Methode auf die Map-Seite an. |
| Hash Join | Liest Zeilen aus der als „Build“ markierten Eingabe und fügt sie basierend auf einer Join-Bedingung in eine Hashtabelle ein. |
| Merge join | Verarbeitet beide Eingabestreams gleichzeitig und gibt Zeilen aus, wenn die Join-Bedingung erfüllt ist. |
| Rekursive Vereinigung | Führt eine Vereinigung von zwei Eingaben durch, von denen eine einen Basisfall und die andere einen rekursiven Fall darstellt. |
n-stufige Operatoren
Operatoren mit mehr als zwei untergeordneten relationalen Elementen.
| Name | Zusammenfassung |
|---|---|
| Union All | Kombiniert alle Zeilensätze seiner untergeordneten Elemente, ohne Duplikate zu entfernen. |
Verteilte Operatoren
Operatoren, die auf mehreren Servern ausgeführt werden.
| Name | Zusammenfassung |
|---|---|
| Distributed Union | Teilt eine oder mehrere Tabellen konzeptionell in mehrere Splits auf, wertet eine Teilabfrage für jeden Split unabhängig aus und fasst dann alle Ergebnisse zusammen. |
| Distributed Apply | Erweitert den Apply Join-Operator durch die Ausführung auf mehreren Servern. |
| Distributed Merge Union | Verteilt eine Abfrage auf mehrere Remote-Server und kombiniert dann die Abfrageergebnisse, um ein sortiertes Ergebnis zu erhalten. |
| Push Broadcast Hash Join | Implementiert SQL-Joins mit einem verteilten Hash-Join. |
Skalare Teilabfragen
SQL-Unterausdrücke, die einen einzelnen skalaren Wert zurückgeben.
| Name | Zusammenfassung |
|---|---|
| Skalare Unterabfragen | SQL-Unterausdrücke, die einen einzelnen skalaren Wert zurückgeben. |
Array-Teilabfragen
SQL-Teilausdrücke, die ein Array zurückgeben.
| Name | Zusammenfassung |
|---|---|
| Array-Teilabfragen | SQL-Teilausdrücke, die ein Array zurückgeben. |
Struct Constructor
Ein Operator, der eine Struktur (eine Sammlung von Feldern) für Zeilen erstellt, die aus einer Compute-Operation resultieren.
| Name | Zusammenfassung |
|---|---|
| Struct-Konstruktor | Ein Operator, der eine Struktur (eine Sammlung von Feldern) für Zeilen erstellt, die aus einer Compute-Operation resultieren. |