Lorsqu'une requête s'exécute lentement ou produit des résultats inattendus, comprendre le traitement et l'exécution du SQL par AnalyticDB for MySQL vous aide à interpréter les plans d'exécution, à lire les diagnostics SQL et à identifier les goulots d'étranglement. AnalyticDB for MySQL décompose chaque requête SQL en une hiérarchie d'étapes, de tâches et d'opérateurs avant de l'exécuter sur le cluster.
Traitement d'une requête par AnalyticDB for MySQL
Lorsque vous envoyez une requête SQL, AnalyticDB for MySQL la traite en cinq étapes :
Le client envoie l'instruction SQL à un nœud contrôleur, c'est-à-dire le nœud d'accès frontal d'AnalyticDB for MySQL. Pour plus de détails sur les nœuds d'accès, consultez la rubrique Architecture technique.
L'analyseur du nœud contrôleur analyse l'instruction pour générer un arbre syntaxique et établir un plan d'exécution logique préliminaire.
L'optimiseur du nœud contrôleur évalue ce plan préliminaire et le réécrit si nécessaire. Il produit un plan d'exécution logique final qui spécifie le type de jointure, l'ordre des jointures, la méthode d'agrégation et la méthode de redistribution des données. Selon les exigences de transmission réseau, l'optimiseur détermine également si le plan doit être fragmenté.
Un nœud exécutant reçoit le plan d'exécution logique final et le convertit en un plan d'exécution physique. Ce dernier se compose d'étapes et d'opérateurs qui traitent les données selon des règles spécifiques.
Le nœud exécutant renvoie les résultats au client ou les écrit dans les tables AnalyticDB for MySQL ainsi que dans des systèmes de stockage externes tels qu'Object Storage Service (OSS).
Concepts du plan d'exécution
Étape
Une étape constitue une partie physique du plan d'exécution. Lors de l'exécution, une requête se divise en plusieurs étapes. Chaque étape :
Récupère les données depuis le système de stockage sous-jacent ou via le réseau.
Se compose de tâches du même type, distribuées sur différents nœuds exécutants.
Exécute ses tâches en parallèle afin de maximiser le débit.
La fonctionnalité de diagnostic SQL vous permet de consulter les résultats de diagnostic au niveau des étapes. Pour plus d'informations, reportez-vous à la section Résultats de diagnostic au niveau des étapes.
Tâche
Une tâche représente l'unité d'exécution d'une étape sur un seul nœud exécutant. Chaque étape répartit son travail sur plusieurs tâches du même type, et toutes les tâches s'exécutent en parallèle au sein du cluster.
Opérateur
Un opérateur est l'unité de base de traitement des données dans AnalyticDB for MySQL. AnalyticDB for MySQL détermine si les opérateurs s'exécutent en mode parallèle ou sériel en fonction de leur sémantique et des dépendances entre eux.
La fonctionnalité de diagnostic SQL vous permet de consulter les résultats de diagnostic au niveau des opérateurs. Pour plus d'informations, reportez-vous à la section Résultats de diagnostic au niveau des opérateurs.
Exemple : requête d'agrégation par groupe
L'illustration suivante montre l'exécution d'une requête d'agrégation par groupe. Le nœud contrôleur divise le plan d'exécution logique en fragments et les distribue aux nœuds exécutants.

| Étape | Tâches | Description |
|---|---|---|
| Étape 2 | 4 | Analyse, filtre et agrège partiellement les données en parallèle. |
| Étape 1 | 2 | Agrège finalement en parallèle les résultats de l'Étape 2. |
| Étape 0 | 1 | Collecte et renvoie les résultats finaux de l'agrégation provenant de l'Étape 1. |
Étapes suivantes
Résultats de diagnostic au niveau des étapes : diagnostiquez les performances des requêtes au niveau des étapes à l'aide de la fonctionnalité de diagnostic SQL.
Résultats de diagnostic au niveau des opérateurs : identifiez les opérateurs les plus lents au sein d'une étape.