Utilisation de l’accélération des requêtes courtes - 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 de l’accélération des requêtes courtes

L’accélération des requêtes courtes (SQA) établit la priorité des requêtes de courte durée sélectionnées sur les requêtes de longue durée. SQA exécute des requêtes de courte durée dans un espace dédié, afin que les requêtes SQA ne soient pas forcées d’attendre dans des files d’attente derrière les requêtes de longue durée. SQA priorise uniquement les requêtes de courte durée qui sont placées dans une file d’attente définie par l’utilisateur. Avec SQA, les requêtes de courte durée commencent à s’exécuter plus rapidement et les utilisateurs obtiennent les résultats plus rapidement.

Si vous activez SQA, vous pouvez réduire les files d’attente WLM qui sont dédiées à l’exécution des requêtes courtes. De plus, les requêtes de longue durée n’ont pas besoin de se heurter à des requêtes courtes pour obtenir des emplacements dans une file d’attente afin que vous puissiez configurer vos files d’attente WLM pour utiliser moins d’emplacements de requêtes. Lorsque vous utilisez une simultanéité réduite, le débit de requêtes est accru et les performances systèmes globales sont améliorées pour la plupart des charges de travail.

Les instructions CREATE TABLE AS (CTAS) et les requêtes en lecture seule, telles que les instructions SELECT, sont admissibles à la SQA.

Amazon Redshift utilise un algorithme de machine learning pour analyser chaque requête admissible et prédire l’heure d’exécution de la requête. Par défaut, WLM attribue dynamiquement une valeur à l’exécution maximale SQA en fonction de l’analyse de la charge de travail de votre cluster. Vous pouvez également spécifier une valeur fixe comprise entre 1 et 20 secondes. Si la durée d’exécution prévue de la requête est inférieure à la durée d’exécution maximale définie ou attribuée dynamiquement par la SQA et que la requête est en attente dans une file d’attente WLM, SQA sépare la requête des files d’attente WLM et la planifie pour une exécution prioritaire. Si une requête s’exécute en un délai supérieur au délai d’exécution maximal de la SQA, la gestion de la charge de travail déplace la requête vers la première file d’attente WLM correspondante en fonction des règles d’affectation de file d’attente de WLM. Au fil du temps, les prédiction s’améliorent à mesure que la SQA apprend de vos modèles de requêtes.

La SQA est activée par défaut dans le groupe de paramètres par défaut et pour tous les nouveaux groupes de paramètres. Pour désactiver la SQA dans la console Amazon Redshift, modifiez la configuration WLM pour un groupe de paramètres et désélectionnez Enable short query acceleration (Activer l’accélération des requêtes courtes). Nous vous recommandons d’utiliser un nombre d’emplacements de requêtes WLM de 15 ou inférieur pour conserver des performances système globales optimales. Pour plus d’informations sur la modification des configurations WLM, consultez Configuration de la gestion de la charge de travail dans le Guide de la gestion du cluster Amazon Redshift.

Durée d’exécution maximale pour les requêtes courtes

Lorsque vous activez SQA, WLM définit par défaut le délai d’exécution maximal des requêtes courtes avec la valeur « dynamic ». Il est recommandé de conserver cette valeur pour la durée d’exécution maximale SQA. Vous pouvez remplacer la valeur par défaut en spécifiant une valeur fixe comprise entre 1 et 20 secondes.

Dans certains cas, vous pouvez envisager d’utiliser des valeurs différentes pour la durée maximale d’exécution SQA afin d’améliorer vos performances système. Dans de tels cas, analysez votre charge de travail pour trouver la durée d’exécution maximale de la plupart de vos courtes requêtes. La requête suivante renvoie la durée d’exécution maximale pour les requêtes au 70e percentile (environ).

select least(greatest(percentile_cont(0.7) within group (order by total_exec_time / 1000000) + 2, 2), 20) from stl_wlm_query where userid >= 100 and final_state = 'Completed';

Après avoir identifié une valeur de délai d’exécution maximal correspondant à votre charge de travail, vous n’avez plus besoin de le modifier, sauf si votre charge de travail change de manière significative.

Surveillance de la SQA

Pour vérifier si la SQA est activée, exécutez l’une des requêtes suivantes. Si la requête renvoie une ligne, la SQA est activée.

select * from stv_wlm_service_class_config where service_class = 14;

La requête suivante affiche le nombre de requêtes ayant parcouru chaque file d’attente de requête (classe de service). Elle affiche aussi la durée d’exécution moyenne, le nombre de requêtes avec un délai d’attente au 90e percentile et le délai d’attente moyen. Les requêtes utilisent la classe de service 14.

select final_state, service_class, count(*), avg(total_exec_time), percentile_cont(0.9) within group (order by total_queue_time), avg(total_queue_time) from stl_wlm_query where userid >= 100 group by 1,2 order by 2,1;

Pour savoir quelles requêtes ont été prélevées par la SQA et exécutées avec succès, exécutez la requête suivante.

select a.queue_start_time, a.total_exec_time, label, trim(querytxt) from stl_wlm_query a, stl_query b where a.query = b.query and a.service_class = 14 and a.final_state = 'Completed' order by b.query desc limit 5;

Pour savoir quelles requêtes ont été choisies par SQA mais ont expiré, exécutez la requête suivante.

select a.queue_start_time, a.total_exec_time, label, trim(querytxt) from stl_wlm_query a, stl_query b where a.query = b.query and a.service_class = 14 and a.final_state = 'Evicted' order by b.query desc limit 5;

Pour plus d’informations sur les requêtes expulsées et, plus généralement, sur les actions basées sur des règles qui peuvent être entreprises sur les requêtes, consultez Règles de surveillance de requête WLM.