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.
Facteurs de performance des requêtes pour Amazon Redshift
Un certain nombre de facteurs peut affecter les performances des requêtes. Les aspects suivants des opérations de vos données, de votre cluster et de votre base de données jouent tous un rôle dans la rapidité avec laquelle vos requêtes sont traitées :
-
-
Clés de tri(Amazon Redshift Advisor)
-
Compression des données(automatique)
-
Distribution de données(automatique)
-
Maintenance des tables(automatique)
-
Propriétés de tableau
Les tables Amazon Redshift sont les unités fondamentales pour le stockage des données dans Amazon Redshift, et chaque table possède un ensemble de propriétés qui déterminent son comportement et son accessibilité. Ces propriétés incluent le tri, le style de distribution, le codage de compression et bien d'autres. Il est essentiel de comprendre ces propriétés pour optimiser les performances, la sécurité et la rentabilité des tables Amazon Redshift.
Clés de tri
Amazon Redshift stocke les données sur disque dans un ordre trié en fonction des clés de tri d'une table. L'optimiseur de requêtes et le processeur de requêtes utilisent les informations relatives à l'emplacement des données dans un nœud de calcul pour réduire le nombre de blocs à scanner. Cela améliore considérablement la vitesse des requêtes en réduisant la quantité de données à traiter. Nous vous recommandons d'utiliser des touches de tri pour faciliter les filtres dans la WHERE
clause. Pour plus d'informations, consultez la section Utilisation des clés de tri dans la documentation Amazon Redshift.
Compression des données
La compression des données réduit les besoins en stockage, ce qui réduit les E/S du disque et améliore les performances des requêtes. Lorsque vous exécutez une requête, les données compressées sont lues en mémoire puis décompressées lors de l'exécution de la requête. En chargeant moins de données en mémoire, Amazon Redshift peut allouer plus de mémoire à l'analyse des données. Le stockage en colonnes stockant des données similaires de manière séquentielle, Amazon Redshift peut appliquer des codages de compression adaptatifs spécifiquement liés aux types de données en colonnes. Le meilleur moyen d'activer la compression des données sur les colonnes d'un tableau est d'utiliser l'AUTO
option d'Amazon Redshift qui permet d'appliquer des codages de compression optimaux lorsque vous chargez le tableau avec des données. Pour en savoir plus sur l'utilisation de la compression automatique des données, consultez la section Chargement de tables avec compression automatique dans la documentation Amazon Redshift.
Distribution de données
Amazon Redshift stocke les données sur les nœuds de calcul conformément au style de distribution d'une table. Lorsque vous exécutez une requête, l’optimiseur de requête redistribue les données sur les nœuds de calcul en fonction des besoins afin d’effectuer des jointures et des agrégations. Le choix du style de distribution adapté à une table permet de réduire l’impact de l’étape de la redistribution en plaçant les données à l’emplacement souhaité avant que les jointures soient effectuées. Nous vous recommandons d'utiliser des clés de distribution pour faciliter les jointures les plus courantes. Pour plus d'informations, consultez la section Utilisation des styles de distribution de données dans la documentation Amazon Redshift.
Maintenance des tables
Bien qu'Amazon Redshift fournisse des performances de pointe prêtes à l'emploi pour la plupart des charges de travail, le bon fonctionnement des clusters Amazon Redshift nécessite une maintenance. La mise à jour et la suppression de données créent des lignes mortes qui doivent être éliminées, et même les tables à ajout uniquement doivent être utilisées si l'ordre d'ajout n'est pas conforme à la clé de tri.
Vacuum
Le processus d'aspiration dans Amazon Redshift est essentiel pour le bon fonctionnement et la maintenance de votre cluster Amazon Redshift. Cela affecte également les performances des requêtes. Comme les suppressions et les mises à jour signalent les anciennes données mais ne les suppriment pas réellement, vous devez utiliser l'aspirateur pour récupérer l'espace disque occupé par les lignes du tableau marquées pour suppression par les opérations précédentes. UPDATE
DELETE
Amazon Redshift peut automatiquement trier et effectuer une VACUUM DELETE
opération sur les tables en arrière-plan.
Pour nettoyer les tables après un chargement ou une série de mises à jour incrémentielles, vous pouvez également exécuter la commande VACUUM
, sur toute la base de données ou sur chaque table individuelle. Si les tables sont dotées de touches de tri et que le chargement des tables n'est pas optimisé pour le tri au fur et à mesure de leur insertion, vous devez utiliser des aspirateurs pour récupérer les données (ce qui peut être crucial pour les performances). Pour plus d'informations, consultez les tables d'aspiration dans la documentation Amazon Redshift.
Analyser
L'ANALYZE
opération met à jour les métadonnées statistiques sur les tables d'une base de données Amazon Redshift. Tenir les statistiques à jour améliore les performances des requêtes en permettant au planificateur de requête de choisir les plans optimaux. Amazon Redshift surveille en permanence votre base de données et effectue automatiquement des opérations d’analyse en arrière-plan. Pour minimiser l'impact sur les performances de votre système, l'ANALYZE
opération s'exécute automatiquement pendant les périodes où les charges de travail sont faibles. Si vous choisissez d'exécuter explicitementANALYZE
, procédez comme suit :
-
Exécutez la
ANALYZE
commande avant d'exécuter des requêtes. -
Exécutez régulièrement la
ANALYZE
commande sur la base de données à la fin de chaque cycle normal de chargement ou de mise à jour. -
Exécutez la
ANALYZE
commande sur les nouvelles tables que vous créez et sur les tables ou colonnes existantes qui subissent des modifications importantes. -
Envisagez d'exécuter
ANALYZE
des opérations selon des plannings différents pour différents types de tables et de colonnes, en fonction de leur utilisation dans les requêtes et de leur propension à changer. -
Pour économiser du temps et des ressources de cluster, utilisez la
PREDICATE COLUMNS
clause lorsque vous exécutez laANALYZE
commande.
Configuration de cluster
Un cluster est un ensemble de nœuds qui effectuent le stockage et le traitement proprement dits des données. Il est essentiel de configurer correctement votre cluster Amazon Redshift si vous souhaitez atteindre les objectifs suivants :
-
Évolutivité et simultanéité élevées
-
Utilisation efficace d'Amazon Redshift
-
De meilleures performances
-
moindre coût
Type de nœud
Un cluster Amazon Redshift peut utiliser l'un des différents types de nœuds (RA3 DC2, et DS2). Chaque type de nœud propose différentes tailles et limites vous permettant de mettre à l’échelle votre cluster de façon appropriée. La taille de nœud détermine la capacité de stockage, la mémoire, le processeur et le prix de chaque nœud du cluster. L'optimisation des coûts et des performances commence par le choix du type et de la taille de nœud appropriés. Pour plus d'informations sur les types de nœuds, consultez la section Présentation des clusters Amazon Redshift dans la documentation Amazon Redshift.
Taille des nœuds, nombre de nœuds et tranches
Un nœud de calcul est divisé en tranches. Un plus grand nombre de nœuds signifie davantage de processeurs et de tranches, ce qui permet à vos requêtes de traiter plus rapidement en exécutant des parties de la requête simultanément sur les tranches. Cependant, un plus grand nombre de nœuds signifie également des dépenses plus importantes. Cela signifie que vous devez trouver l'équilibre entre le coût et les performances adapté à votre système. Pour plus d'informations sur l'architecture du cluster Amazon Redshift, consultez la section Architecture du système d'entrepôt de données dans la documentation Amazon Redshift.
Gestion de la charge de travail
La gestion de la charge de travail Amazon Redshift (WLM) permet aux utilisateurs de gérer de manière flexible les files d'attente avec des priorités afin que les requêtes courtes et rapides ne restent pas bloquées dans des files d'attente derrière des requêtes de longue durée. Le WLM automatique utilise des algorithmes d'apprentissage automatique (ML) pour profiler les requêtes et les placer dans la file d'attente appropriée avec les ressources appropriées, tout en gérant la simultanéité des requêtes et l'allocation de mémoire. Pour plus d'informations sur le WLM, consultez Implémentation de la gestion de charge de travail dans la documentation Amazon Redshift.
Accélération des requêtes courtes
L'accélération des requêtes courtes (SQA) donne la priorité aux requêtes de courte durée par rapport aux requêtes de longue durée. SQA exécute les requêtes dans un espace dédié afin que les requêtes SQA ne soient pas obligées d'attendre dans des files d'attente derrière des requêtes plus longues. SQA priorise uniquement les requêtes de courte durée qui sont placées dans une file d’attente définie par l’utilisateur. Si vous utilisez la SQA, les requêtes de courte durée commencent à s'exécuter plus rapidement et vous pouvez obtenir des résultats plus rapidement. Si vous activez SQA, vous pouvez réduire ou éliminer les files d'attente WLM dédiées aux requêtes de courte durée. En outre, les requêtes de longue durée n'ont pas besoin de se disputer des emplacements dans une file d'attente WLM. Cela signifie que vous pouvez configurer vos files d'attente WLM pour utiliser moins de slots de requêtes. Si vous réduisez la simultanéité, le débit des requêtes est augmenté et les performances globales du système sont améliorées pour la plupart des charges de travail. Pour plus d'informations sur la SQA, consultez la section Utilisation de l'accélération des requêtes courtes dans la documentation Amazon Redshift.
Requête SQL
Une requête de base de données est une demande de données provenant d'une base de données. La demande doit être envoyée dans un cluster Amazon Redshift à l'aide de SQL. Amazon Redshift prend en charge les outils clients SQL qui se connectent via Java Database Connectivity (JDBC) et Open Database Connectivity (ODBC). Vous pouvez utiliser la plupart des outils clients SQL qui prennent en charge les pilotes ODBC ou JDBC.
Structure de requête
La façon dont votre requête est écrite influe considérablement sur ses performances. Nous vous recommandons d'écrire des requêtes pour traiter et renvoyer le moins de données nécessaire pour répondre à vos besoins. Pour plus d'informations sur la manière de structurer vos requêtes, consultez la section Meilleures pratiques pour la conception de requêtes Amazon Redshift de ce guide.
Compilation de code
Amazon Redshift génère et compile le code pour chaque plan d'exécution des requêtes. Le code compilé s’exécute plus rapidement car il supprime la surcharge liée à l’utilisation d’un interpréteur. Vous avez généralement des frais généraux la première fois que le code est généré et compilé. Par conséquent, la première fois que vous exécutez une requête, ses performances peuvent prêter à confusion. Les frais généraux peuvent être particulièrement visibles lorsque vous exécutez des requêtes ponctuelles. Nous vous recommandons d'exécuter la requête une seconde fois afin de déterminer ses performances habituelles.
Amazon Redshift utilise un service de compilation sans serveur pour dimensionner les compilations de requêtes au-delà des ressources de calcul d’un cluster Amazon Redshift. Les segments de code compilés sont mis en cache localement sur le cluster et dans un cache pratiquement illimité. Ce cache persiste après le redémarrage du cluster. Les appels ultérieurs de la même requête s'exécutent plus rapidement car ils peuvent ignorer la phase de compilation. Le cache n'est pas compatible entre les versions d'Amazon Redshift. Par conséquent, le code est recompilé lorsque les requêtes s'exécutent après une mise à niveau de la version. En utilisant un service de compilation évolutif, Amazon Redshift peut compiler du code en parallèle pour offrir des performances rapides. L’ampleur de l’accélération de la charge de travail dépend de la complexité et de la simultanéité des requêtes.