Workflow d’exécution et de planification de requête - Amazon Redshift

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Workflow d’exécution et de planification de requête

L’illustration suivante fournit présentation d’ensemble du workflow d’exécution et de planification de la requête.

Query planning and execution workflow diagram showing front end, optimizer, and back end components.

Le workflow de planification et d’exécution de la requête se déroule comme suit :

  1. Le nœud principal reçoit la requête et analyse le SQL.

  2. L’analyseur produit un arbre de requête initial qui est une représentation logique de la requête originale. Amazon Redshift saisit ensuite cette arborescence de requêtes dans l’optimiseur de requêtes.

  3. L’optimiseur évalue et, si nécessaire, réécrit la requête afin d’optimiser son efficacité. Ce processus entraîne parfois la création de plusieurs requêtes connexes pour en remplacer une seule.

  4. L’optimiseur génère un plan de requête (ou plusieurs, si l’étape précédente entraîné la création de plusieurs requêtes) pour que l’exécution s’effectue avec les meilleures performances. Le plan de requête spécifie les options d’exécution telles que les types de jointures, l’ordre des jointures, les options d’agrégation et les exigences de distribution des données.

    Vous pouvez utiliser la commande EXPLAIN pour afficher le plan de requête. Le plan de requête est un outil fondamental permettant d’analyser et d’ajuster des requêtes complexes. Pour plus d’informations, consultez Plan de requête.

  5. Le moteur d’exécution traduit le plan de requête en étapes, segments et flux :

    Étape

    Chaque étape est une opération individuelle nécessaire au cours de l’exécution des requêtes. Les étapes peuvent être combinées afin d’autoriser les nœuds de calcul à effectuer une requête, créer une jointure ou une autre opération de base de données.

    Segment

    Combinaison de plusieurs étapes pouvant être effectuées par un processus unique, également la plus petite unité de compilation exécutable par une tranche de nœud de calcul. Une tranche est l’unité de traitement parallèle dans Amazon Redshift. Les segments d’un flux s’exécutent en parallèle.

    Flux

    Ensemble de segments à répartir entre les tranches de nœuds de calcul disponibles.

    Le moteur d’exécution génère du code compilé basé sur les étapes, les segments et les flux. Le code compilé s’exécute plus vite qu’un code interprété et utilise moins de capacité de calcul. Ce code compilé est ensuite diffusé aux nœuds de calcul.

    Note

    Lors de l’évaluation de vos requêtes, vous devez toujours comparer les durées de la seconde exécution d’une requête, car la première durée d’exécution inclut la surcharge due à la compilation du code. Pour plus d’informations, consultez Facteurs affectant la performance des requêtes.

  6. Les tranches de nœuds de calcul exécutent les segments de requête en parallèle. Dans le cadre de ce processus, Amazon Redshift tire parti d’une gestion optimisée des communications réseau, de la mémoire et des disques pour transmettre les résultats intermédiaires d’une étape du plan de requête à la suivante. Cela contribue également à accélérer l’exécution des requêtes.

Les étapes 5 et 6 s’effectuent une fois par flux. Le moteur crée les segments exécutables pour un flux et les envoie vers les nœuds de calcul. Lorsque les segments de ce flux sont terminés, le moteur génère les segments pour le prochain flux. Ainsi, le moteur peut analyser ce qui est arrivé dans le flux précédent (par exemple, si les opérations étaient basées sur le disque) pour influencer la génération de segments dans le flux suivant.

Lorsque les nœuds de calcul sont terminés, ils renvoient les résultats de la requête au nœud principal pour le traitement final. Le nœud principal fusionne les données en un seul jeu de résultats et traite tous les tris ou agrégations nécessaires. Le nœud principal renvoie ensuite les résultats au client.

Note

Au besoin, les nœuds de calcul peuvent renvoyer des données au nœud principal au cours de l’exécution des requêtes. Par exemple, si vous avez une sous-requête comportant une clause LIMIT, la limite est appliquée au nœud principal avant que les données soient redistribuées dans le cluster en vue d’un traitement ultérieur.