Opérateurs d'exécution de requêtes

Cette page décrit les opérateurs utilisés dans les plans d'exécution de requêtes Spanner. Pour savoir comment récupérer un plan d'exécution pour une requête spécifique à l'aide de la console Google Cloud , consultez Comprendre comment Spanner exécute les requêtes.

Les plans d'exécution sont compatibles avec les bases de données utilisant les dialectes GoogleSQL et PostgreSQL.

Mappage des constructions SQL aux opérateurs d'exécution de requêtes

Le mappage exact entre les constructions SQL et les opérateurs d'exécution de requêtes dépend de l'optimisation des requêtes. Le tableau suivant présente quelques mappages courants :

SQL Opérateur d'exécution de requêtes
À propos des tableaux Table scan, index scan
WHERE Filter Scan, Filter
GROUP BY Aggregate
Fonction scalaire (telle que ISNULL) Calcul
Fonction d'agrégation (par exemple, SUM) Aggregate
JOIN Tout opérateur de jointure (voir Jointures)
Sous-requête Sous-requête scalaire ou de tableau
LIMIT Limite, Limite de tri
ORDER BY Trier, Limiter le tri

Opérateurs d'exécution de requêtes

Cette section liste tous les opérateurs d'exécution de requêtes qui peuvent composer un plan d'exécution de requêtes dans Spanner.

Opérateurs feuille

Opérateurs qui n'ont pas d'enfants.

Nom Résumé
Array unnest Aplatit une table d'entrée sous la forme de lignes d'éléments.
Generate relation Renvoie zéro ou plusieurs lignes.
Unit relation Renvoie une ligne.
Empty relation Ne renvoie aucune ligne.
Scan Analyse une source de lignes et les renvoie.
Filter scan Il se sert de l'analyse pour réduire le nombre de lignes lues dans la base de données.

Opérateurs unaires

Opérateurs ayant un seul enfant relationnel.

Nom Résumé
Aggregate Implémente les instructions SQL GROUP BY et les fonctions d'agrégation.
Apply mutations Applique à la table les mutations d'une instruction LMD (langage de manipulation de données).
Create batch Regroupe ses lignes d'entrée dans une séquence.
Calcul Génère un résultat en lisant ses lignes d'entrée et en ajoutant une ou plusieurs colonnes calculées à l'aide d'expressions scalaires.
Compute struct Crée une variable pour une structure contenant des champs pour chacune des colonnes d'entrée.
DataBlockToRowAdapter Adapte une méthode d'exécution par lot à une méthode d'exécution par ligne.
Filter Lit toutes les lignes à partir de ses entrées, applique un prédicat scalaire sur chaque ligne, puis renvoie uniquement les lignes qui correspondent au prédicat.
Limite Restreint le nombre de lignes renvoyées.
Union de fractionnement local Recherche les divisions de table stockées sur le serveur local, exécute une sous-requête sur chaque division, puis crée une union qui combine tous les résultats.
Attribution d'ID aléatoire Génère un résultat en lisant ses lignes d'entrée et en ajoutant un nombre aléatoire à chaque ligne.
RowToDataBlockAdapter Adapte une méthode d'exécution orientée ligne à une méthode d'exécution orientée batch.
Serialize result Sérialise chaque ligne du résultat final de la requête pour le renvoyer au client.
Trier Lit ses lignes d'entrée, les classe par colonne, puis renvoie les résultats triés.
Fonction de valeur de table (FVT) Génère une sortie en lisant ses lignes d'entrée et en appliquant la fonction spécifiée.
Union input Renvoie les résultats à un opérateur UNION ALL.

Opérateurs binaires

Opérateurs ayant deux enfants relationnels.

Nom Résumé
S'inscrire Applique chaque ligne du côté entrée au côté carte à l'aide d'une méthode apply.
Hash join Lit les lignes de l'entrée signalée comme "build" et les insère dans une table de hachage en fonction d'une condition de jointure.
Merge join Consomme simultanément les flux d'entrée et génère des lignes lorsque la condition de jointure est remplie.
Union récursive Effectue une union de deux entrées, l'une représentant un cas de base et l'autre un cas récursif.

Opérateurs n-aires

Opérateurs comptant plus de deux enfants relationnels.

Nom Résumé
Union all Combine tous les ensembles de lignes de ses enfants sans supprimer les doublons.

Opérateurs distribués

Opérateurs qui s'exécutent sur plusieurs serveurs.

Nom Résumé
Distributed union Divise de manière conceptuelle une ou plusieurs tables en différentes partitions, évalue à distance et de manière indépendante une sous-requête sur chaque partition, puis réunit tous les résultats.
Distributed apply Étend l'opérateur apply join en s'exécutant sur plusieurs serveurs.
Distributed merge union Distribue une requête sur plusieurs serveurs distants, puis associe les résultats de la requête pour produire un résultat trié.
Push broadcast hash join Implémente les jointures SQL à l'aide d'une jointure de hachage distribuée.

Sous-requêtes scalaires

Sous-expressions SQL qui renvoient une seule valeur scalaire.

Nom Résumé
Sous-requêtes scalaires Sous-expressions SQL qui renvoient une seule valeur scalaire.

Sous-requêtes de tableau

Sous-expressions SQL qui renvoient un tableau.

Nom Résumé
Sous-requêtes de tableau Sous-expressions SQL qui renvoient un tableau.

Constructeur de structure

Opérateur qui crée une structure (collection de champs) pour les lignes résultant d'une opération de calcul.

Nom Résumé
Constructeur de struct Opérateur qui crée une structure (collection de champs) pour les lignes résultant d'une opération de calcul.