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.
Avec Amazon Redshift, vous pouvez gérer la simultanéité de la charge de travail et l'allocation des ressources en activant le saut dans les files d'attente de requêtes WLM (Workload Management). Cette fonctionnalité permet aux requêtes de « passer » temporairement d'une file d'attente assignée à une file d'attente plus prioritaire lorsque des ressources sont disponibles, améliorant ainsi les performances globales des requêtes et l'utilisation du système. Les sections suivantes fournissent des instructions détaillées sur la configuration et l'utilisation du saut de file d'attente de requêtes WLM dans Amazon Redshift.
Une requête peut être replacée à cause d’un délai WLM ou d’une action de saut de règle de surveillance de requête (QMR). Vous pouvez uniquement sauter des requêtes dans une configuration WLM manuelle.
Lorsqu’une requête est replacée, la gestion de la charge de travail tente d’acheminer la requête vers la file d’attente correspondante suivante en fonction des règles d’affectation de file d’attente de WLM. Si la requête ne correspond à aucune autre définition de file d’attente, elle est annulée. Elle n’est pas affectée à la file d’attente par défaut.
Actions de délai WLM
Le tableau suivant résume le comportement des différents types de requêtes soumis à un délai WLM.
Type de requête | Action |
---|---|
INSERT, UPDATE et DELETE | Annuler |
Fonctions définies par l'utilisateur () UDFs | Annuler |
UNLOAD | Annuler |
COPY | Continuer l’exécution |
Opérations de maintenance | Continuer l’exécution |
Requêtes en lecture seule dans un état de returning |
Continuer l’exécution |
Requêtes en lecture seule dans un état de running |
Réaffecter ou redémarrer |
CREATE TABLE AS (CTAS), SELECT INTO | Réaffecter ou redémarrer |
Saut de file d’attente en raison d’un délai WLM
WLM replace les types de requêtes suivants quand ceux-ci expirent :
-
Les requêtes en lecture seule, telles que les instructions SELECT qui sont dans un état WLM de
running
. Pour rechercher l’état WLM d’une requête, affichez la colonne STATE sur la table système STV_WLM_QUERY_STATE. -
Les instructions CREATE TABLE AS (CTAS). Le saut de file d’attente WLM prend en charge à la fois les instructions CTAS définies par l’utilisateur et celles générées par le système.
-
Les instructions SELECT INTO.
Les requêtes qui ne sont pas soumises au délai WLM continuent de s’exécuter dans la file d’attente d’origine jusqu’à ce qu’elles soient terminées. Les types de requêtes suivants ne sont pas soumis au délai WLM :
-
Les instructions COPY
-
Les opérations de maintenance, comme ANALYZE et VACUUM
-
Les requêtes en lecture seule, telles que les instructions SELECT qui ont atteint un état WLM de
returning
. Pour rechercher l’état WLM d’une requête, affichez la colonne STATE sur la table système STV_WLM_QUERY_STATE.
Les requêtes qui ne sont pas admissibles au saut en fonction d’un délai WLM sont annulées quand elles expirent. Les types de requêtes suivants ne sont pas admissibles au saut en fonction d’un délai WLM :
-
Les instructions SELECT, UPDATE et DELETE
-
Les instructions UNLOAD
-
Fonctions définies par l'utilisateur () UDFs
Délai WLM des requêtes réaffectées et redémarrées
Lorsqu’une requête est replacée et qu’aucune file d’attente correspondante n’est trouvée, celle-ci est annulée.
Lorsqu’une requête est replacée et qu’une file d’attente correspondante est trouvée, WLM tente de réaffecter celle-ci à la nouvelle file d’attente. Si une requête ne peut être réaffectée, elle est redémarrée dans la nouvelle file d’attente, comme décrit ci-après.
Une requête est affectée uniquement si toutes les conditions suivantes sont vraies :
-
Une file d’attente correspondante a été trouvée.
-
La nouvelle file d’attente dispose de suffisamment d’emplacements libres pour exécuter la requête. Une requête peut nécessiter plusieurs emplacements si le paramètre wlm_query_slot_count a été défini sur une valeur supérieure à 1.
-
La nouvelle file d’attente dispose d’au moins autant de mémoire disponible que la requête en utilise actuellement.
Si la requête est réaffectée, celle-ci continue à s’exécuter dans la nouvelle file d’attente. Les résultats intermédiaires sont préservés, de sorte que l’impact sur le temps d’exécution total est minime.
Si la requête ne peut être réaffectée, elle est annulée et redémarrée dans la nouvelle file d’attente. Les résultats intermédiaires sont supprimés. La requête attend dans la file d’attente, puis commence à s’exécuter lorsque suffisamment d’emplacements sont disponibles.
Action de saut QMR
Le tableau suivant résume le comportement des différents types de requêtes soumis à une action de saut QMR.
Type de requête | Action |
---|---|
COPY | Continuer l’exécution |
Opérations de maintenance | Continuer l’exécution |
Fonctions définies par l'utilisateur () UDFs | Continuer l’exécution |
UNLOAD | Réaffecter ou continuer l’exécution |
INSERT, UPDATE et DELETE | Réaffecter ou continuer l’exécution |
Requêtes en lecture seule dans un état de returning |
Réaffecter ou continuer l’exécution |
Requêtes en lecture seule dans un état de running |
Réaffecter ou redémarrer |
CREATE TABLE AS (CTAS), SELECT INTO | Réaffecter ou redémarrer |
Pour savoir si une requête qui a été replacée par QMR a été réaffectée, redémarrée ou annulée, interrogez la table de journal système STL_WLM_RULE_ACTION.
Action de saut QMR des requêtes réaffectées et redémarrées
Lorsqu’une requête est replacée et qu’aucune file d’attente correspondante n’est trouvée, celle-ci est annulée.
Lorsqu’une requête est replacée et qu’une file d’attente correspondante est trouvée, WLM tente de réaffecter celle-ci à la nouvelle file d’attente. Si une requête ne peut être réaffectée, elle est redémarrée dans la nouvelle file d’attente ou continue de s’exécuter dans la file d’attente d’origine, comme décrit ci-après.
Une requête est affectée uniquement si toutes les conditions suivantes sont vraies :
-
Une file d’attente correspondante a été trouvée.
-
La nouvelle file d’attente dispose de suffisamment d’emplacements libres pour exécuter la requête. Une requête peut nécessiter plusieurs emplacements si le paramètre wlm_query_slot_count a été défini sur une valeur supérieure à 1.
-
La nouvelle file d’attente dispose d’au moins autant de mémoire disponible que la requête en utilise actuellement.
Si la requête est réaffectée, celle-ci continue à s’exécuter dans la nouvelle file d’attente. Les résultats intermédiaires sont préservés, de sorte que l’impact sur le temps d’exécution total est minime.
Si une requête ne peut être réaffectée, elle est redémarrée ou continue de s’exécuter dans la file d’attente d’origine. Si la requête est redémarrée, elle est annulée et redémarrée dans la nouvelle file d’attente. Les résultats intermédiaires sont supprimés. La requête attend dans la file d’attente, puis commence à s’exécuter lorsque suffisamment d’emplacements sont disponibles.