Working with short query acceleration - Amazon Redshift

Si nous fournissons une traduction de la version anglaise du guide, la version anglaise du guide aura préséance en cas de contradiction. La traduction sera une traduction automatique.

Working with short query acceleration

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 ou éliminer 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 aussi spécifier une valeur fixe comprise entre 1 et 20 secondes. Dans certains cas, le temps d'exécution prévu pour la requête peut être inférieur à la durée maximale définie pour SQA. Dans ce cas, la requête doit attendre dans une file d'attente. Ici, SQA isole la requête des requêtes de la gestion de la charge de travail et la planifie pour l'exécution des priorités. 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 SQA dans le Amazon Redshift console, modifier la configuration WLM pour un groupe de paramètres et désélectionner Activer une accélération de requête courte. 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 de plus amples informations sur la modification des configurations WLM, veuillez consulter Configuration de la gestion de la charge de travail dans le Amazon Redshift Cluster Management Guide.

Maximum runtime for short queries

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 remplacer la valeur par défaut en spécifiant une valeur fixe comprise entre 1et 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.

Monitoring 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;