Les opérateurs d'AnalyticDB for MySQL représentent les étapes individuelles d'un plan d'exécution. Chaque opérateur gère une tâche de traitement des données spécifique : analyse d'une table, jointure de jeux de données, agrégation des résultats ou déplacement des données entre nœuds. Dans un cluster distribué, la plupart des opérateurs s'exécutent en parallèle sur les nœuds de calcul.
Utilisez la fonctionnalité diagnostics SQL pour inspecter les propriétés des opérateurs et consulter les résultats du diagnostic au niveau des opérateurs. Pour comprendre comment les opérateurs se composent en étapes et en plans, consultez le schéma hiérarchique du plan d'exécution au niveau des opérateurs.
Seuls certains opérateurs possèdent des propriétés.
Opérateurs d'accès aux données
TableScan
Lit les données depuis la source de données sous-jacente. Lorsque les conditions de filtrage peuvent être propagées vers la couche de stockage (propagation des prédicats), l'opérateur TableScan les applique directement à l'aide des index de données ; aucun opérateur Filter distinct n'est nécessaire.
| Propriété | Description |
|---|---|
| TableName | La table analysée. |
| DataBase | La base de données à laquelle appartient la table. |
| SelectFields | Les champs lus par ce nœud TableScan. |
| FilterPushDown | Indique si les conditions de filtrage sont propagées vers un nœud de stockage. Affiché uniquement lorsque l'étape actuelle inclut des conditions de filtrage propagées. |
| PushedDownFilter | Les conditions de filtrage propagées vers un nœud de stockage. Affiché uniquement lorsque l'étape actuelle inclut des conditions de filtrage propagées. |
Opérateurs de traitement des données
Aggregation
Effectue une agrégation standard ou une agrégation par regroupement à l'aide de fonctions telles que SUM(), COUNT() et AVG(). AnalyticDB for MySQL exécute les opérations d'agrégation en parallèle sur les nœuds de calcul. Pour plus d'informations, consultez la section Optimisation des requêtes de regroupement et d'agrégation.
| Propriété | Description |
|---|---|
| GroupByKeys | Les champs utilisés pour le regroupement. |
| AggregationFunctions | Les fonctions d'agrégation appliquées, telles que SUM(), COUNT() et AVG(). Remarque
Lorsqu'aucun champ SELECT n'apparaît dans la clause GROUP BY et qu'aucune autre fonction d'agrégation n'est utilisée, le système appelle |
| Step | L'étape d'agrégation. Valeurs valides : PARTIAL (agrégation partielle), FINAL (agrégation finale), SINGLE (agrégation en une seule étape qui effectue directement l'agrégation finale). |
DistinctLimit
Équivalent à DISTINCT LIMIT dans les instructions SQL.
Filter
Filtre les données au niveau de la couche de calcul lorsque la propagation des prédicats n'est pas disponible. Par défaut, AnalyticDB for MySQL crée des index pour tous les champs et propage les conditions de filtrage vers la couche de stockage (visibles sous forme de propriétés FilterPushDown sur un opérateur TableScan). L'opérateur Filter apparaît lorsque la propagation est bloquée.
La propagation est bloquée dans les cas suivants :
L'indicateur
no_index_columnsoufilter_not_pushdown_columnsest utilisé dans une requête, ouadb_config filter_not_pushdown_columnsest configuré pour le cluster.Les conditions de filtrage utilisent des fonctions telles que
CAST.Les colonnes filtrées ne disposent d'aucun index ; par exemple, la table a été créée avec le mot-clé
no_indexou les index ont été supprimés ultérieurement à l'aide deno_index.
| Propriété | Description |
|---|---|
| Filter | La condition de filtrage appliquée par cet opérateur. |
Join
Équivalent à JOIN dans les instructions SQL. L'algorithme de jointure dépend des données et des index disponibles.
Lors de la création d'une table distribuée dans AnalyticDB for MySQL, spécifiez les clés de distribution à l'aide de la clause DISTRIBUTED BY. Le type de redistribution des données est déterminé par l'utilisation ou non de la clé de jointure comme clé de distribution. Pour plus d'informations sur la redistribution des données, consultez la section RemoteExchange.
| Propriété | Description |
|---|---|
| Criterias | Les conditions de jointure. Exemple : tb_1.col_a=tb_2.col_a. |
| Type | Le type de jointure : INNER JOIN, LEFT JOIN, RIGHT JOIN ou FULL JOIN. |
| Method | L'algorithme de jointure : Hash (met en cache la table la plus petite en mémoire et fait correspondre les lignes à l'aide d'une table de hachage) ou Index (utilise les index de clé de jointure basés sur la fonctionnalité d'indexation complète des colonnes d'AnalyticDB for MySQL). |
| JoinFilter | Conditions de filtrage supplémentaires appliquées lors de la jointure. |
Limit
Équivalent à LIMIT dans les instructions SQL.
MarkDistinct
Gère COUNT(DISTINCT) lorsqu'une requête contient deux opérations COUNT(DISTINCT) ou plus. Pour une seule opération COUNT(DISTINCT), AnalyticDB for MySQL utilise plutôt l'opérateur Aggregation.
Project
Applique des expressions de projection à des champs spécifiques, par exemple des expressions CASE WHEN THEN ou la fonction CONCAT().
| Propriété | Description |
|---|---|
| ProjectExpression | L'expression de projection appliquée aux champs de sortie. |
Sort
Équivalent à ORDER BY dans les instructions SQL. Trie les champs de la clause ORDER BY.
| Propriété | Description |
|---|---|
| OrderBy | Le champ utilisé pour trier les données. |
| Orderings | La direction du tri et le placement des valeurs NULL. Valeurs valides : ASC_NULLS_FIRST, ASC_NULLS_LAST, DESC_NULLS_FIRST, DESC_NULLS_LAST. |
SortMerge
Lors du tri distribué, fusionne et retrier les données partiellement triées reçues de plusieurs nœuds en amont.
TopN
Équivalent à ORDER BY LIMIT m,n dans les instructions SQL. Combine le tri et la limitation en un seul opérateur pour plus d'efficacité.
| Propriété | Description |
|---|---|
| OrderBy | Le champ utilisé pour trier les données. |
| Count | Équivalent aux opérations ORDER BY LIMIT dans les instructions SQL. |
| Orderings | La direction du tri et le placement des valeurs NULL. Valeurs valides : ASC_NULLS_FIRST, ASC_NULLS_LAST, DESC_NULLS_FIRST, DESC_NULLS_LAST. |
| Step | L'étape d'exécution. Valeurs valides : PARTIAL (trie les données localement sur chaque nœud), SORTMERGE (fusionne et trie les données partiellement triées), SINGLE (effectue directement la fusion et le tri finaux). |
| Offset | Le décalage de la ligne de départ (la valeur OFFSET). |
Union
Équivalent à UNION dans les instructions SQL.
Window
Équivalent aux fonctions de fenêtrage dans les instructions SQL. Pour connaître les fonctions prises en charge, consultez la section Fonctions de fenêtrage.
Opérateurs de déplacement des données
RemoteExchange
Transfère les données entre les nœuds de calcul, des étapes en amont vers les étapes en aval. La méthode dépend de la structure de la requête et de l'alignement des clés de distribution.
| Méthode | Comportement |
|---|---|
| Broadcast | Copie les données de chaque nœud en amont vers tous les nœuds en aval. Chaque nœud en aval se retrouve avec une copie complète. |
| Repartition | Partitionne les données de chaque nœud en amont selon une règle spécifiée et envoie chaque partition au nœud en aval cible. |
| Gather | Concentre les données de tous les nœuds en amont sur un seul nœud en aval. |
Pour plus d'informations sur la manière dont les étapes échangent des données, consultez le schéma hiérarchique du plan d'exécution au niveau des étapes.
RemoteSource
Marque le point d'entrée des données dans l'étape actuelle en provenance de nœuds distants via le réseau.
| Propriété | Description |
|---|---|
| OutputColumns | Les champs transmis à l'étape actuelle par cet opérateur. |
StageOutput
Transfère les données traitées dans l'étape actuelle vers les nœuds des étapes en aval via le réseau.
Opérateurs d'écriture
TableWriter
Écrit les résultats de la requête dans une table. Apparaît dans les requêtes qui effectuent des opérations ETL (extraction, transformation et chargement), telles que INSERT INTO et REPLACE INTO.