Section 1 : Comprendre le comportement de traitement de file d'attente par défaut - 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.

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

  1. 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.

  2. 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;
  3. 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.

    Table showing queue statistics with columns for description, slots, mem, and other attributes.

É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

  1. 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;
  2. 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.

    Database query result showing execution details with query ID, queue, slot count, start time, state, and times.

É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

  1. 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.

  2. 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.

    Database query result showing execution details with query ID, queue, slot count, and timing information.

    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.

  3. 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;
  4. 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.

    Table showing queue details with slots, memory, and execution status for super user and query groups.
    Database query table showing two rows with execution details and timing information.

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.