Utilisation des clés de tri - 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.

Utilisation des clés de tri

Note

Nous vous recommandons de créer vos tables avec SORTKEY AUTO. Si vous procédez ainsi, Amazon Redshift utilise l’optimisation automatique des tables pour choisir la clé de tri. Pour plus d'informations, consultez Utilisation de l’optimisation automatique des tables. Le reste de cette section fournit des détails sur l’ordre de tri.

Lorsque vous créez une table, vous pouvez définir une ou plusieurs de ses colonnes comme clés de tri. Lorsque les données sont chargées initialement dans la table vide, les lignes sont stockées sur le disque dans un ordre trié. Les informations sur les colonnes de clés de tri sont transmises au planificateur de requête qui les utilise pour créer des plans basés sur le mode de tri des données. Pour plus d’informations, consultez CREATE TABLE. Pour plus d’informations sur les bonnes pratiques lors de la création d’une clé de tri, consultez Choix de la meilleure clé de tri.

Le tri permet de traiter efficacement les prédicats limités à une plage. Amazon Redshift stocke les données en colonnes dans des blocs de disque de 1 Mo. Les valeurs minimale et maximale de chaque bloc sont stockées dans le cadre des métadonnées. Si une requête utilise un prédicat à plage restreinte, le processeur de requêtes peut utiliser les valeurs min et max pour ignorer rapidement un grand nombre de blocs lors des analyses de table. Supposons par exemple qu’une table stocke cinq années de données triées par date et qu’une requête spécifie une plage de dates d’un mois. Dans ce cas, vous pouvez supprimer jusqu’à 98 % des blocs du disque de l’analyse. Si les données ne sont pas triées, davantage de blocs de disque (peut-être même tous) doivent être analysés.

Vous pouvez spécifier une clé de tri composée ou une clé de tri entrelacée. Une clé de tri composée est plus efficace lorsque les prédicats de requête utilisent un préfixe, qui est un sous-ensemble des colonnes de clé de tri dans l’ordre. Une clé de tri entrelacée confère un poids égal à chaque colonne de la clé de tri, les prédicats de requête peuvent donc utiliser n’importe quel sous-ensemble des colonnes qui constituent la clé de tri, dans n’importe quel ordre.

Pour comprendre l’incidence de la clé de tri choisie sur la performance des requêtes, utilisez la commande EXPLAIN. Pour plus d'informations, consultez Workflow d’exécution et de planification de requête.

Pour définir un type de tri, utilisez le mot clé INTERLEAVED ou COMPOUND avec votre instruction CREATE TABLE ou CREATE TABLE AS. La valeur par défaut est COMPOUND. COMPOUND est recommandé lorsque vous mettez régulièrement à jour vos tables avec des opérations INSERT, UPDATE ou DELETE. Une clé de tri INTERLEAVED peut utiliser huit colonnes au maximum. Selon la taille de vos données et de votre cluster, l’exécution de VACUUM REINDEX prend beaucoup plus de temps que celle de VACUUM FULL car l’opération effectue un passage supplémentaire pour analyser les clés de tri entrelacées. L’opération de tri et de fusion peut prendre plus de temps pour les tables entrelacées, car le tri entrelacé peut nécessiter la réorganisation de plus de lignes qu’un tri composé.

Pour afficher les clés de tri d’une table, interrogez la vue système SVV_TABLE_INFO.

Tri multidimensionnel de la disposition des données (version préliminaire)

Ceci est une version préliminaire de la documentation sur le tri multidimensionnel de la disposition des données des tables, qui est en version préliminaire. La documentation et la fonction sont toutes deux sujettes à modification. Nous vous recommandons d’utiliser cette fonction uniquement avec des clusters de test et non dans des environnements de production. Pour connaître les conditions générales de la version préliminaire, veuillez consulter la rubrique Participation au service Bêta dans les Conditions générales du service AWS.
Note

Cette fonctionnalité n’est disponible que dans les clusters et groupes de travail en version préliminaire. Pour créer un cluster en version préliminaire, consultez Création d’un cluster en version préliminaire dans le Guide de gestion Amazon Redshift. Pour créer un groupe de travail en version préliminaire, consultez Création d’un groupe de travail en version préliminaire dans le Guide de gestion Amazon Redshift.

Une clé de tri multidimensionnel de la disposition des données est un type de clé de tri AUTO basée sur des prédicats répétitifs trouvés dans une charge de travail. Si votre charge de travail comporte des prédicats répétitifs, Amazon Redshift peut améliorer les performances d’analyse des tables en colocalisant les lignes de données qui répondent aux prédicats répétitifs. Au lieu de stocker les données d’une table dans un ordre de colonnes strict, une clé de tri multidimensionnel de la disposition des données stocke les données en analysant les prédicats répétitifs qui apparaissent dans une charge de travail. Plusieurs prédicats répétitifs peuvent être trouvés dans une charge de travail. En fonction de la charge de travail, ce type de clé de tri peut améliorer les performances de nombreux prédicats. Amazon Redshift détermine automatiquement si cette méthode de clé de tri doit être utilisée pour les tables définies avec une clé de tri AUTO.

Par exemple, supposons que vous disposiez d’un jeu de données trié par ordre de colonne. Il peut être nécessaire d’examiner de nombreux blocs de données pour déterminer s’ils répondent aux prédicats de la charge de travail. Toutefois, si les données sont stockées sur le disque dans un ordre de prédicat, moins de blocs doivent être analysés pour répondre à la requête. Dans ce cas, l’utilisation d’une clé de tri multidimensionnel de la disposition des données est avantageuse.

Pour savoir si une requête utilise une clé de mise en page des données multidimensionnelle, consultez la colonne step_attribute de la vue SYS_QUERY_DETAIL. Lorsque la valeur est multi-dimensional, la disposition multidimensionnelle des données a été utilisée pour la requête. Pour savoir si une requête utilise une clé de tri multidimensionnel de la disposition des données, consultez la colonne sortkey1 de la vue SVV_TABLE_INFO. Lorsque la valeur est padb_internal_mddl_key_col, la disposition multidimensionnelle des données a été utilisée pour la clé de tri de la table.

Pour empêcher Amazon Redshift d’utiliser une clé de tri multidimensionnel de la disposition des données, choisissez une option de clé de tri de table autre que SORTKEY AUTO. Pour plus d’informations sur les options SORTKEY, consultez CREATE TABLE.

Clé de tri composée

Une clé de tri composée est constituée de toutes les colonnes répertoriées dans la définition de clé de tri, dans leur ordre d’apparition. Une clé de tri composée est très utile lorsqu’un filtre de requête applique des conditions, telles que des filtres et des jointures, qui utilisent un préfixe de clés de tri. Les avantages du tri composé en termes de performances diminuent lorsque les requêtes dépendent seulement de colonnes de tri secondaires, sans référence aux colonnes principales. COMPOUND est le type de tri par défaut.

Les clés de tri composées peuvent augmenter la vitesse des jointures, les opérations GROUP BY et ORDER BY et les fonctions de fenêtrage qui utilisent PARTITION BY et ORDER BY. Par exemple, une jointure par fusion, ce qui est souvent plus rapide qu’une jointure par hachage, est possible lorsque les données sont distribuées et pré-triées sur les colonnes de jointure. Les clés de tri composées permettent également d’améliorer la compression.

Lorsque vous ajoutez des lignes à une table triée contenant déjà des données, la région non triée se développe, ce qui a une incidence significative sur les performances. C’est encore plus flagrant lorsque la table utilise le tri entrelacé, en particulier lorsque les colonnes de tri incluent des données qui augmentent de façon uniforme, telles que les colonnes de date ou d’horodatage. Exécutez régulièrement une opération VACUUM, surtout après des charges de données volumineuses, pour trier et analyser à nouveau les données. Pour plus d’informations, consultez Gestion de la taille de la région non triée. Après avoir effectué une opération « vacuum » pour trier à nouveau les données, il est recommandé d’exécuter une commande ANALYZE pour mettre à jour les métadonnées statistiques pour le planificateur de requête. Pour plus d'informations, consultez Analyse des tables.

Clé de tri entrelacée

Un tri entrelacé confère un poids égal à chaque colonne, ou sous-ensemble de colonnes, de la clé de tri. Si plusieurs requêtes utilisent des colonnes différentes pour les filtres, vous pouvez souvent améliorer les performances de ces requêtes en utilisant un style de tri entrelacé. Quand une requête utilise des prédicats restrictifs sur les colonnes de tri secondaires, le tri entrelacé améliore considérablement les performances des requêtes par rapport à un tri composé.

Important

N’utilisez pas de clé de tri entrelacée sur les colonnes qui contiennent des attributs qui augmentent de façon monotone, tels que les colonnes d’identité, les dates ou les horodatages.

L’amélioration des performances que vous obtenez en mettant en œuvre une clé de tri entrelacée doit être comparée aux temps de charge et de vidage.

Les tris entrelacés sont plus efficaces avec des requêtes extrêmement sélectives qui filtrent une ou plusieurs colonnes de clés dans la clause WHERE, par exemple select c_name from customer where c_region = 'ASIA'. Les avantages du tri entrelacé augmentent avec le nombre de colonnes triées restreintes.

Un tri entrelacé est plus efficace avec des tables volumineuses. Le tri est appliqué sur chaque tranche. Ainsi, un tri entrelacé est plus efficace lorsqu’une table est suffisamment volumineuse pour nécessiter plusieurs blocs de 1 Mo par tranche. Ici, le processeur de requêtes peut ignorer une proportion significative des blocs en utilisant des prédicats restrictifs. Pour afficher le nombre de blocs utilisés par une table, interrogez la vue système STV_BLOCKLIST.

Lorsque vous effectuez un tri sur une seule colonne, un tri entrelacé peut offrir de meilleures performances qu’un tri composé si les valeurs de la colonne ont un préfixe de commun. Par exemple, les URL qui commencent habituellement par « http://www ». Les clés de tri composées utilisent un nombre limité de caractères après le préfixe, ce qui se traduit par un grand nombre de duplications de clés. Les tris entrelacés utilisent un schéma de compression interne pour les valeurs de la carte de zone qui leur permet de mieux distinguer les valeurs de la colonne ayant un préfixe commun long.

Lors de la migration de clusters provisionnés Amazon Redshift vers Amazon Redshift sans serveur, Redshift convertit les tables comportant des clés de tri entrelacées et DISTSTYLE KEY en clés de tri composées. Le DISTSTYLE ne change pas. Pour en savoir plus sur les styles de distribution, consultez Utilisation des styles de distribution de données.

VACUUM REINDEX

Lorsque vous ajoutez des lignes à une table triée contenant déjà des données, les performances peuvent se détériorer au fil du temps. Cette détérioration se produit pour les tris composés et entrelacés, mais elle a des conséquences plus graves sur les tables. Une commande VACUUM permet de restaurer l’ordre de tri, mais l’opération peut prendre plus de temps pour les tables entrelacées, car la fusion de nouvelles données entrelacées peut impliquer la modification de chaque bloc de données.

Lorsque les tables sont initialement chargées, Amazon Redshift analyse la distribution des valeurs dans les colonnes de clés de tri et utilise ces informations pour un entrelacement optimal des colonnes de clés. A mesure qu’une table se développe, la distribution des valeurs dans les colonnes de clé de tri peut changer, ou se décaler, en particulier avec les colonnes de date ou d’horodatage. Si l’asymétrie devient trop grande, les performances peuvent en être affectées. Pour analyser à nouveau les clés de tri et restaurer les performances, exécutez la commande VACUUM avec le mot clé REINDEX. Du fait qu’il a besoin d’effectuer un passage d’analyse des données supplémentaire, VACUUM REINDEX peut prendre plus de temps qu’une commande VACUUM standard pour les tables entrelacées. Pour afficher des informations sur l’asymétrie de la distribution de clés et la durée de la dernière réindexation, interrogez la vue système SVV_INTERLEAVED_COLUMNS.

Pour plus d’informations sur la façon de déterminer la fréquence d’exécution de VACUUM et sur le moment d’exécution d’un VACUUM REINDEX, consultez Choix de réindexation.