
Optimisation des performances des requêtes avec Redshift Concurrency Scaling

Introduction
Amazon Redshift est un puissant data warehouse qui vous aide à analyser rapidement de grandes quantités de données. À mesure que les volumes de données augmentent et que les demandes des utilisateurs augmentent, maintenir des performances de requêtes optimales peut devenir un défi. C’est ici que le Redshift Concurrency Scaling entre en jeu.
Cet article couvrira les bases du Redshift Concurrency Scaling, y compris les commandes de configuration et les paramètres. Nous discuterons également de la manière dont il aide à distribuer les charges de travail pour les applications à haute performance et haute disponibilité.
Qu’est-ce que le Redshift Concurrency Scaling ?
Le Redshift Concurrency Scaling ajuste la capacité du cluster pour plus de requêtes de lecture simultanées, ce qui fait une grande différence. Il modifie le nombre de questions que votre groupe peut traiter en même temps, assurant des réponses toujours rapides et cohérentes.
Comment ça fonctionne ? Redshift provisionne automatiquement des clusters transitoires supplémentaires lorsque le Concurrency Scaling est activé. Cela se produit chaque fois que le nombre de requêtes utilisateur simultanées dépasse le seuil de la file d’attente configurée. Les groupes temporaires lisent des requêtes que Redshift ne peut gérer que dans la file d’attente.
Votre groupe principal peut continuer à travailler sur d’autres tâches sans interruption. Une fois que la taille de la file d’attente descend en dessous du seuil, le système termine automatiquement les clusters transitoires pour optimiser les coûts.
Configuration du Concurrency Scaling
Pour exploiter la puissance du Redshift Concurrency Scaling, vous devez l’activer sur votre cluster. Voici comment :
1. Assurez-vous que votre cluster fonctionne avec un nœud de type ra3.16xlarge ou supérieur.
2. Exécutez la commande SQL suivante pour activer le Concurrency Scaling :
ALTER CLUSTER <your-cluster-name> SET CONCURRENCY SCALING ENABLED;
3. Configurez le mode Concurrency Scaling à l’aide de la commande SET. Deux modes sont disponibles :
– AUTO : Redshift gère automatiquement le nombre de clusters transitoires en fonction de la charge de travail. C’est le mode par défaut.
– MANUAL : Vous spécifiez le nombre maximum de clusters transitoires.
4. Pour définir le mode, utilisez la commande suivante :
ALTER CLUSTER <your-cluster-name> SET CONCURRENCY SCALING MODE 'AUTO|MANUAL';
5. Si vous utilisez le mode MANUEL, définissez le nombre maximum de clusters transitoires :
ALTER CLUSTER <your-cluster-name> SET CONCURRENCY SCALING MAX_CLUSTERS <number>;
Distribution de la charge de travail avec des files de requêtes
Redshift Concurrency Scaling fonctionne de concert avec les files de requêtes pour distribuer efficacement les charges de travail entre votre cluster et les clusters transitoires. Les files de requêtes vous permettent de prioriser et de gérer différents types de requêtes en fonction de leur importance et des ressources nécessaires.
Par défaut, Redshift dispose d’une file d’attente par défaut unique. Cependant, vous pouvez créer des files d’attente supplémentaires pour séparer et prioriser les charges de travail. Voici un exemple de création d’une nouvelle file de requêtes :
CREATE QUEUE reporting_queue PRIORITY 5 QUERY_GROUP 'reporting';
Dans cet exemple, nous créons une file de rapports avec une priorité de 5. Nous associons ensuite la file de rapports à un groupe de requêtes appelé ‘reporting’. Les requêtes soumises à cette file auront une priorité plus élevée que celles de la file d’attente par défaut.
Pour acheminer les requêtes vers des files spécifiques, vous pouvez utiliser la commande SET :
SET query_group TO 'reporting';
Cette action définit le groupe de requêtes de la session actuelle sur ‘reporting’, et le système acheminera les requêtes suivantes vers la file associée.
Paramètres de Concurrency Scaling pour la haute disponibilité
Lors de la configuration du Redshift Concurrency Scaling pour les applications à haute disponibilité, il existe plusieurs paramètres clés à considérer :
- max_concurrency_scaling_clusters : Ce paramètre spécifie le nombre maximum de clusters transitoires qui peuvent être provisionnés. Définissez-le en fonction de vos exigences de charge de travail et de vos contraintes budgétaires.
- concurrency_scaling_mode : Comme mentionné précédemment, ce paramètre détermine si le Concurrency Scaling est géré automatiquement ou manuellement.
- wlm_query_slot_count : Ce paramètre définit le nombre de slots de requête (requêtes simultanées) par cluster. Ajustez-le en fonction des caractéristiques de votre charge de travail et des ressources disponibles.
- query_group : Utilisez des groupes de requêtes pour acheminer des requêtes vers des files spécifiques et prioriser les charges de travail critiques.
Voici un exemple de configuration pour un environnement à haute disponibilité :
ALTER CLUSTER <your-cluster-name> SET CONCURRENCY SCALING MAX_CLUSTERS 5; ALTER CLUSTER <your-cluster-name> SET CONCURRENCY SCALING MODE 'AUTO'; ALTER CLUSTER <your-cluster-name> SET wlm_query_slot_count 50; CREATE QUEUE critical_queue PRIORITY 10 QUERY_GROUP 'critical'; CREATE QUEUE reporting_queue PRIORITY 5 QUERY_GROUP 'reporting';
Dans cet exemple, nous aurons jusqu’à 5 clusters temporaires. Nous activerons également le Concurrency Scaling automatique. De plus, nous attribuerons 50 slots de requête par cluster. Nous créons deux files d’attente, critical_queue et reporting_queue, avec des priorités différentes pour gérer séparément les charges de travail critiques et de reporting.
Exemple réel
Considérons un scénario réel où une entreprise de commerce électronique utilise Redshift pour ses besoins en data warehousing. Lors des périodes de ventes chargées, ils reçoivent de nombreuses questions de différents départements tels que les ventes, les stocks et l’analyse des clients.
Pour gérer cette charge de travail accrue, ils activent le Redshift Concurrency Scaling avec la configuration suivante :
ALTER CLUSTER ecommerce_cluster SET CONCURRENCY SCALING ENABLED; ALTER CLUSTER ecommerce_cluster SET CONCURRENCY SCALING MODE 'AUTO'; ALTER CLUSTER ecommerce_cluster SET CONCURRENCY SCALING MAX_CLUSTERS 10; CREATE QUEUE sales_analytics_queue PRIORITY 8 QUERY_GROUP 'sales_analytics'; CREATE QUEUE inventory_queue PRIORITY 6 QUERY_GROUP 'inventory'; CREATE QUEUE customer_segmentation_queue PRIORITY 4 QUERY_GROUP 'customer_segmentation';
Lorsque trop de requêtes sont en cours d’exécution en même temps, Redshift créera plus de clusters temporaires pour gérer la charge de travail. Les requêtes sont efficacement distribuées entre le cluster principal et les clusters transitoires en fonction de leurs groupes de requêtes et de leurs priorités de file d’attente assignées.
En conséquence, l’entreprise de commerce électronique maintient des performances de requête optimales pendant les périodes de pointe, garantissant des informations en temps opportun pour les décisions commerciales cruciales. Les requêtes d’analyse des ventes reçoivent la priorité la plus élevée, suivies par les requêtes de gestion des stocks et de segmentation des clients.
Conclusion
Redshift Concurrency Scaling vous permet d’ajuster la capacité de votre cluster pour gérer efficacement les augmentations soudaines de requêtes. En utilisant des files de requêtes et en configurant l’allocation des ressources, vous pouvez distribuer efficacement les charges de travail et prioriser les requêtes critiques pour des applications à haute performance et haute disponibilité.
N’oubliez pas de considérer des facteurs tels que les caractéristiques de la charge de travail, la disponibilité des ressources et le budget lors de la configuration du Concurrency Scaling. Avec la configuration appropriée, vous pouvez débloquer tout le potentiel de Redshift et offrir des performances de requêtes ultrarapides à vos utilisateurs.
Pour plus d’informations sur Redshift Concurrency Scaling, consultez la documentation officielle AWS :
DataSunrise : Renforcement de la sécurité et de la conformité des bases de données
Bien que Redshift offre des fonctionnalités robustes pour les performances et l’évolutivité, assurer la sécurité et la conformité de vos données est tout aussi important. DataSunrise propose des outils conviviaux et flexibles pour la sécurité, le masquage et la conformité des bases de données. Avec DataSunrise, vous pouvez mettre en œuvre des configurations haute disponibilité et protéger vos données sensibles.
Pour en savoir plus sur les solutions de DataSunrise et les voir en action, visitez notre site Web et planifiez votre démonstration personnalisée dès aujourd’hui !