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.
Section 1 : Comprendre le comportement de traitement de file d'attente par défaut
Avant de commencer à configurer le WLM manuel, il est utile de comprendre le comportement par défaut du traitement des files d'attente dans Amazon Redshift. Dans cette section, vous créez deux vues de base de données qui retournent des informations à partir de plusieurs tables système. Ensuite, vous exécutez quelques requêtes de test pour voir comment elles sont routées par défaut. Pour plus d’informations sur les tables système, consultez Informations de référence sur les tables et les vues système.
Étape 1 : Créer la vue WLM_QUEUE_STATE_VW
Dans cette étape, vous créez une vue appelée WLM_QUEUE_STATE_VW. Cette vue retourne des informations à partir des tables système suivantes.
Vous utilisez cette vue tout au long du didacticiel pour surveiller ce qu'il advient des files d'attente, une fois que vous avez modifié la configuration de la gestion de la charge de travail. Le tableau suivante décrit les données que retourne la vue WLM_QUEUE_STATE_VW.
Colonne | Description |
---|---|
file d’attente | Numéro associé à la ligne qui représente une file d'attente. Le numéro de la file d'attente détermine l'ordre des files d'attente dans la base de données. |
description | Valeur qui indique si la file d'attente est disponible uniquement pour certains groupes d'utilisateurs, pour certains groupes de requêtes ou pour tous les types de requêtes. |
slots | Nombre d'emplacements alloués à la file d'attente. |
mem | Quantité de mémoire allouée à la file d'attente, exprimée en Mo par emplacement. |
max_execution_time | Durée pendant laquelle une requête est autorisée à s'exécuter avant d'être terminée. |
user_* | Valeur qui indique si les caractères génériques sont autorisés dans la configuration WLM pour indiquer des groupes d'utilisateurs. |
query_* | Valeur qui indique si les caractères génériques sont autorisés dans la configuration WLM pour indiquer des groupes de requêtes. |
queued | Nombre de requêtes qui sont en attente dans la file d'attente pour être traitées. |
executing | Nombre de requêtes qui sont en cours d'exécution. |
executed | Nombre de requêtes exécutées. |
Pour créer la vue WLM_QUEUE_STATE_VW
-
Ouvrez Amazon Redshift RSQL et connectez-vous à votre exemple de base de données TICKIT. Si vous n'avez pas cette base de données, consultez Prérequis.
-
Exécutez la requête suivante pour créer la vue WLM_QUEUE_STATE_VW.
create view WLM_QUEUE_STATE_VW as select (config.service_class-5) as queue , trim (class.condition) as description , config.num_query_tasks as slots , config.query_working_mem as mem , config.max_execution_time as max_time , config.user_group_wild_card as "user_*" , config.query_group_wild_card as "query_*" , state.num_queued_queries queued , state.num_executing_queries executing , state.num_executed_queries executed from STV_WLM_CLASSIFICATION_CONFIG class, STV_WLM_SERVICE_CLASS_CONFIG config, STV_WLM_SERVICE_CLASS_STATE state where class.action_service_class = config.service_class and class.action_service_class = state.service_class and config.service_class > 4 order by config.service_class;
-
Exécutez la requête suivante pour afficher les informations que la vue contient.
select * from wlm_queue_state_vw;
Voici un exemple de résultat.
Étape 2 : Créer la vue WLM_QUEUE_STATE_VW
Dans cette étape, vous créez une vue appelée WLM_QUERY_STATE_VW. Cette vue retourne des informations à partir de la table système STV_WLM_QUERY_STATE.
Vous utilisez cette vue tout au long du didacticiel pour surveiller les requêtes en cours d'exécution. Le tableau suivant décrit les données que retourne la vue WLM_QUERY_STATE_VW.
Colonne | Description |
---|---|
query | ID de requête. |
file d’attente | Numéro de la file d'attente. |
slot_count | Nombre d'emplacements alloués à la requête. |
start_time | Heure de début de la requête. |
state | État de la requête (en cours d'exécution, par exemple). |
queue_time | Nombre de microsecondes passées par la requête dans la file d'attente. |
exec_time | Nombre de microsecondes pendant lesquelles la requête était en cours d'exécution. |
Pour créer la vue WLM_QUERY_STATE_VW
-
Dans RSQL, exécutez la requête suivante pour créer la vue WLM_QUERY_STATE_VW.
create view WLM_QUERY_STATE_VW as select query, (service_class-5) as queue, slot_count, trim(wlm_start_time) as start_time, trim(state) as state, trim(queue_time) as queue_time, trim(exec_time) as exec_time from stv_wlm_query_state;
-
Exécutez la requête suivante pour afficher les informations que la vue contient.
select * from wlm_query_state_vw;
Voici un exemple de résultat.
Étape 3 : Exécuter les requêtes de test
Dans cette étape, vous exécutez des requêtes à partir de plusieurs connexions dans RSQL et examinez les tables système pour déterminer comment les requêtes ont été routées pour le traitement.
Pour cette étape, vous avez besoin d'avoir deux fenêtres RSQL ouvertes :
-
Dans la première fenêtre RSQL, vous exécutez des requêtes qui surveillent l'état des files d'attente et des requêtes utilisant les vues que vous avez déjà créées dans ce didacticiel.
-
Dans la deuxième fenêtre, vous exécutez des requêtes de longue durée pour modifier les résultats que vous trouvez dans la première fenêtre RSQL.
Pour exécuter les requêtes de test
-
Ouvrez deux fenêtres RSQL. Si vous avez déjà une fenêtre ouverte, il vous suffit d'en ouvrir une seconde. Vous pouvez choisir le même compte utilisateur pour ces deux connexions.
-
Dans la première fenêtre RSQL, exécutez la requête suivante.
select * from wlm_query_state_vw;
Voici un exemple de résultat.
Cette requête retourne un résultat faisant référence à elle-même. La requête en cours d'exécution est l'instruction SELECT de cette vue. Une requête sur cette vue retourne toujours au moins un résultat. Comparez ce résultat à celui obtenu après le démarrage de la requête de longue durée à l'étape suivante.
-
Dans la deuxième fenêtre RSQL, exécutez une requête à partir de l'exemple de base de données TICKIT. Cette requête doit s'exécuter pendant une minute environ de telle sorte que vous ayez le temps d'explorer les résultats de la vue WLM_QUEUE_STATE_VW et de la vue WLM_QUERY_STATE_VW que vous avez créées précédemment. Dans certains cas, vous pouvez constater que la requête ne s'exécute pas assez longtemps pour que vous puissiez interroger les deux vues. Dans ces cas, vous pouvez augmenter la valeur du filtre sur
l.listid
pour qu'elle s'exécute plus longtemps.Note
Pour raccourcir le temps d'exécution des requêtes et améliorer les performances du système, Amazon Redshift met en cache le résultat de certains types de requêtes dans la mémoire du nœud principal. Lorsque la mise en cache des résultats est activée, les requêtes ultérieures s'exécutent beaucoup plus rapidement. Pour empêcher une exécution trop rapide de la requête, désactivez la mise en cache des résultats pour la séance en cours.
Pour désactiver la mise en cache du résultat sur la séance en cours, définissez le paramètre enable_result_cache_for_session sur
off
, comme illustré ci-après.set enable_result_cache_for_session to off;
Dans la deuxième fenêtre RSQL, exécutez la requête suivante.
select avg(l.priceperticket*s.qtysold) from listing l, sales s where l.listid < 100000;
-
Dans la première fenêtre RSQL, interrogez WLM_QUEUE_STATE_VW et WLM_QUERY_STATE_VW, puis comparez les résultats aux résultats précédents.
select * from wlm_queue_state_vw; select * from wlm_query_state_vw;
Voici quelques exemples de résultats.
Notez les différences suivantes entre vos requêtes précédentes et les résultats de cette étape :
-
Il y a deux lignes maintenant dans WLM_QUERY_STATE_VW. Un résultat est la requête faisant référence à elle-même pour exécuter une opération SELECT sur cette vue. Le deuxième résultat est la longue requête de l'étape précédente.
-
La colonne en cours d'exécution de WLM_QUEUE_STATE_VW a augmenté de 1 à 2. Cette entrée de colonne signifie qu'il y a deux requêtes en cours d'exécution dans la file d'attente.
-
La colonne exécutée est augmentée chaque fois que vous exécutez une requête dans la file d'attente.
La vue WLM_QUEUE_STATE_VW est utile pour obtenir une vue d'ensemble des files d'attente et connaître le nombre de requêtes traitées dans chaque file d'attente. La vue WLM_QUERY_STATE_VW est utile pour obtenir une vue plus détaillée des requêtes individuelles en cours d'exécution.