Questa pagina descrive gli operatori utilizzati nei piani di esecuzione delle query di Spanner. Per informazioni su come recuperare un piano di esecuzione per una query specifica utilizzando la console Google Cloud , consulta Informazioni su come Spanner esegue le query.
I piani di esecuzione supportano i database con dialetto GoogleSQL e PostgreSQL.
Mappatura di costrutti SQL a operatori di esecuzione delle query
La mappatura esatta tra i costrutti SQL e gli operatori di esecuzione delle query dipende dall'ottimizzazione delle query. La seguente tabella mostra alcuni mapping comuni:
| SQL | Operatore di esecuzione delle query |
|---|---|
| Riferimento tabella | Scansione tabella, scansione indice |
WHERE |
Filtro scansione, Filtro |
GROUP BY |
Aggregate |
Funzione scalare (ad esempio ISNULL) |
Computing |
Funzione aggregata (ad esempio SUM) |
Aggregate |
JOIN |
Qualsiasi operatore di join; vedi Join |
| Sottoquery | Sottoquery scalare o array |
LIMIT |
Limite, Limite ordinamento |
ORDER BY |
Ordina, Limite di ordinamento |
Operatori di esecuzione delle query
Questa sezione elenca tutti gli operatori di esecuzione delle query che possono costituire un piano di esecuzione delle query in Spanner.
Operatori foglia
Operatori senza figli.
| Nome | Riepilogo |
|---|---|
| Array unnest | Appiattisce un array di input in righe di elementi. |
| Genera relazione | Restituisce zero o più righe. |
| Relazione tra unità | Restituisce una riga. |
| Relazione vuota | Non restituisce righe. |
| Scan | Analizza una fonte di righe e le restituisce. |
| Analisi dei filtri | Funziona con la scansione per ridurre il numero di righe lette dal database. |
Operatori unari
Operatori con un singolo figlio relazionale.
| Nome | Riepilogo |
|---|---|
| Aggregate | Implementa le istruzioni SQL e le funzioni di aggregazione GROUP BY. |
| Applicare le mutazioni | Applica le modifiche di un'istruzione DML (Data Manipulation Language) alla tabella. |
| Crea batch | Raggruppa le righe di input in una sequenza. |
| Computing | Produce output leggendo le righe di input e aggiungendo una o più colonne aggiuntive calcolate utilizzando espressioni scalari. |
| Compute struct | Crea una variabile per una struttura che contiene campi per ciascuna delle colonne di input. |
| DataBlockToRowAdapter | Adatta un metodo di esecuzione orientato ai batch a un metodo di esecuzione orientato alle righe. |
| Filtro | Legge tutte le righe dell'input, applica un predicato scalare a ogni riga e restituisce solo le righe che soddisfano il predicato. |
| Limite | Vincola il numero di righe restituite. |
| Local split union | Trova le suddivisioni della tabella archiviate sul server locale, esegue una sottoquery su ogni suddivisione, quindi crea un'unione che combina tutti i risultati. |
| Assegnazione di ID casuali | Produce l'output leggendo le righe di input e aggiungendo un numero casuale a ogni riga. |
| RowToDataBlockAdapter | Adatta un metodo di esecuzione orientato alle righe a un metodo di esecuzione orientato ai batch. |
| Serialize result | Serializza ogni riga del risultato finale della query per la restituzione al client. |
| Ordina | Legge le righe di input, le ordina in base alle colonne e restituisce i risultati ordinati. |
| Funzione con valori di tabella (TVF) | Produce l'output leggendo le righe di input e applicando la funzione specificata. |
| Union input | Restituisce i risultati a un operatore Union All. |
Operatori binari
Operatori con due figli relazionali.
| Nome | Riepilogo |
|---|---|
| Richiedi di partecipare | Applica ogni riga sul lato input al lato mappa utilizzando un metodo di applicazione. |
| Hash join | Legge le righe dell'input contrassegnate come build e le inserisce in una tabella hash in base a una condizione di join. |
| Unione di tipo merge | Utilizza entrambi i flussi di input contemporaneamente e restituisce le righe quando la condizione di join è soddisfatta. |
| Unione ricorsiva | Esegue l'unione di due input, uno che rappresenta un caso base e l'altro che rappresenta un caso ricorsivo. |
Operatori n-ari
Operatori con più di due elementi secondari relazionali.
| Nome | Riepilogo |
|---|---|
| Union all | Combina tutti i set di righe dei relativi elementi secondari senza rimuovere i duplicati. |
Operatori distribuiti
Operatori che vengono eseguiti su più server.
| Nome | Riepilogo |
|---|---|
| Unione distribuita | Divide concettualmente una o più tabelle in più suddivisioni, valuta in remoto una sottoquery in modo indipendente su ogni suddivisione e poi unisce tutti i risultati. |
| Applicazione distribuita | Estende l'operatore di join applicato eseguendo l'operazione su più server. |
| Unione di unione distribuita | Distribuisce una query su più server remoti per poi combinarne i risultati e produrre un risultato ordinato. |
| Push broadcast hash join | Implementa i join SQL utilizzando un join hash distribuito. |
Sottoquery scalari
Sottoespressioni SQL che restituiscono un singolo valore scalare.
| Nome | Riepilogo |
|---|---|
| Sottoquery scalari | Sottoespressioni SQL che restituiscono un singolo valore scalare. |
Sottoquery di array
Sottoespressioni SQL che restituiscono un array.
| Nome | Riepilogo |
|---|---|
| Sottoquery di array | Sottoespressioni SQL che restituiscono un array. |
Costruttore di struct
Un operatore che crea una struct (una raccolta di campi) per le righe risultanti da un'operazione di calcolo.
| Nome | Riepilogo |
|---|---|
| Struct constructor | Un operatore che crea una struct (una raccolta di campi) per le righe risultanti da un'operazione di calcolo. |