Facteurs affectant la performance 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.

Facteurs affectant la performance des requêtes

Un certain nombre de facteurs peut affecter les performances des requêtes. Les aspects suivants de vos opérations de données, de cluster et de base de données jouent tous un rôle dans la vitesse de traitement de vos requêtes.

  • Nombre de nœuds, de processeurs ou de tranches – Un nœud de calcul est partitionné en tranches. Davantage de nœuds signifie davantage de processeurs et de tranches, ce qui accélère le traitement de vos requêtes grâce à l’exécution simultanée de parties de la requête entre les tranches. Cependant, davantage de nœuds signifie également une dépense supérieure, autrement dit, il vous faudra trouver un équilibre entre les coûts et les performances en fonction de votre système. Pour plus d’informations sur l’architecture de cluster Amazon Redshift, consultez Architecture système de l’entrepôt des données.

  • Types de nœuds : un cluster Amazon Redshift peut utiliser l’un des nombreux types de nœuds. 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. Pour plus d’informations sur les types de nœuds, consultez Présentation des clusters Amazon Redshift dans le Guide de gestion Amazon Redshift.

  • Distribution des données – Amazon Redshift stocke les données de la table sur les 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 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. Pour de plus amples informations, veuillez consulter Utilisation des styles de distribution de données.

  • Ordre de tri des données – Amazon Redshift stocke les données de la table sur le disque dans un ordre trié selon les clés de tri de la table. L’optimiseur de requête et le processeur de requêtes utilisent les informations sur l’emplacement des données afin de réduire le nombre de blocs à analyser, ce qui améliore ainsi la vitesse de la requête. Pour de plus amples informations, veuillez consulter Utilisation des clés de tri.

  • Taille du jeu de données – Un volume de données plus élevé dans le cluster peut ralentir les performances des requêtes, car davantage de lignes doivent être analysées et redistribuées. Vous pouvez atténuer cet effet en nettoyant et en archivant régulièrement les données et en utilisant un prédicat afin de limiter le jeu de données de la requête.

  • Opérations simultanées – L’exécution de plusieurs opérations simultanément peut affecter les performances des requêtes. Chaque opération prend un ou plusieurs emplacements dans une file d’attente de requête disponible et utilise la mémoire qui leur est associée. Si d’autres opérations sont en cours d’exécution, il se peut que les emplacements de file d’attente de requête nécessaires ne soient pas disponibles. Dans ce cas, la requête devra attendre que des emplacements s’ouvrent pour commencer le traitement. Pour plus d’informations sur la création et la configuration des files d’attente de requête, consultez Implémentation de la gestion de la charge de travail.

  • Structure de requête – La façon dont votre requête est rédigée influe sur ses performances. Écrivez autant que possible des requêtes à traiter et renvoyez aussi peu de données que nécessaire. Pour de plus amples informations, veuillez consulter Bonnes pratiques Amazon Redshift pour la conception de requêtes.

  • Compilation de code – Amazon Redshift génère et compile du code pour chaque plan d’exécution de requête.

    Le code compilé s’exécute plus rapidement car il supprime la surcharge liée à l’utilisation d’un interpréteur. Vous avez toujours un coût de surcharge 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. Le coût de surcharge peut être particulièrement significatif lorsque vous exécutez des requêtes ponctuelles. Exécutez la requête une deuxième fois pour déterminer ses performances typiques. 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 exécutions ultérieures de la même requête sont plus rapides car elles peuvent éviter la phase de compilation.

    Le cache n’est pas compatible entre les versions d’Amazon Redshift. Par conséquent, le cache de compilation est vidé et le code est recompilé lorsque les requêtes s’exécutent après une mise à niveau de la version. Si vos requêtes sont soumises à des accords de niveau de service stricts, nous vous recommandons d’exécuter à l’avance des segments de requête qui analysent les données des tables de cluster. Cela permet à Amazon Redshift de mettre en cache les données de la table de base, réduisant ainsi le temps de planification des requêtes 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.