Distribution des données pour l'optimisation des requêtes - 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.

Distribution des données pour l'optimisation des requêtes

Lorsque vous chargez des données dans une table, Amazon Redshift distribue les lignes de la table à chacun des nœuds de calcul en fonction du style de distribution de la table. Lorsque vous exécutez une requête, l’optimiseur de requête redistribue les lignes sur les nœuds de calcul en fonction des besoins afin d’effectuer les jointures et les agrégations. Le choix d’un style de distribution de table a pour objectif de minimiser l’impact de l’étape de redistribution en plaçant les données où elles doivent être avant que l’exécution de la requête.

Note

Cette section vous présente les principes de distribution des données dans une base de données Amazon Redshift. Nous vous recommandons de créer vos tables avec DISTSTYLE AUTO. Si vous procédez ainsi, Amazon Redshift utilise l’optimisation automatique des tables pour choisir le style de distribution des données. Pour plus d'informations, consultez Optimisation automatique des tables. Le reste de cette section fournit des détails sur les styles de distribution.

Concepts de distribution de données

Voici quelques concepts de distribution de données pour Amazon Redshift.

Nœuds et tranches

Un cluster Amazon Redshift est un ensemble de nœuds. Chaque nœud du cluster a ses propres système d’exploitation, mémoire dédiée et stockage sur disque dédié. Un des nœud est le nœud principal, qui gère la distribution des données et des tâches de traitement des requêtes dans les nœuds de calcul. Les nœuds de calcul fournissent les ressources nécessaires à l’exécution de ces tâches.

Le stockage sur disque d’un nœud de calcul est divisé en un certain nombre de tranches. Le nombre de tranches par nœud dépend de la taille de nœud du cluster. Les nœuds participent tous à l’exécution de requêtes parallèles, en travaillant sur des données réparties aussi uniformément que possible sur les tranches. Pour plus d'informations sur le nombre de tranches pour chaque taille de nœud, consultez la rubrique À propos des clusters et nœuds dans le Guide de la gestion du cluster Amazon Redshift.

Redistribution des données

Lorsque vous chargez des données dans une table, Amazon Redshift distribue les lignes de la table sur chacune des tranches de nœuds en fonction du style de distribution de la table. Dans le cadre d’un plan de requête, l’optimiseur détermine où les blocs de données doivent être situés pour exécuter au mieux la requête. Les données sont ensuite déplacées physiquement, ou redistribuées, pendant l’exécution de la requête. La redistribution peut impliquer l’envoi de lignes spécifiques aux nœuds pour joindre ou diffuser une table entière sur tous les nœuds.

La redistribution de données peut représenter une partie importante du coût d’un plan de requête, et le trafic réseau qu’elle génère peut affecter d’autres opérations de base de données et ralentir les performances globales du système. Tant que vous prévoyez le meilleur emplacement pour situer les données à l’origine, vous pouvez réduire l’impact de la redistribution des données.

Objectifs de la distribution de données

Lorsque vous chargez des données dans une table, Amazon Redshift distribue les lignes de la table sur les nœuds de calcul et les tranches en fonction du style de distribution que vous avez choisi lorsque vous avez créé la table. La distribution de données a deux objectifs principaux :

  • Distribuer la charge de travail de manière uniforme entre les nœuds du cluster. La distribution inégale, ou l’asymétrie de la distribution de données, oblige certains nœuds à travailler plus que d’autres, ce qui nuit aux performances des requêtes.

  • Minimiser les déplacements de données lors de l’exécution d’une requête. Si les lignes qui participent aux jointures ou aux agrégats sont déjà colocalisées sur les nœuds avec leurs lignes de jonction dans d’autres tables, l’optimiseur n’a pas besoin de redistribuer autant de données lors de l’exécution des requêtes.

La stratégie de distribution que vous choisissez pour votre base de données a des conséquences importantes sur les performance des requêtes, les besoins en stockage, le chargement des données et la maintenance. En choisissant le meilleur style de distribution pour chaque table, vous pouvez équilibrer la distribution de vos données et améliorer considérablement les performances globales du système.