Operatoren für die Abfrageausführung

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.