Implémentation de la gestion manuelle de la charge de travail - 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.

Implémentation de la gestion manuelle de la charge de travail

Grâce à la gestion manuelle de la charge de travail, vous pouvez gérer les performances du système et l'expérience de vos utilisateurs en modifiant la configuration de votre gestion de la charge de travail afin de créer des files d'attente distinctes pour les requêtes de longue durée et les requêtes de courte durée.

Lorsque les utilisateurs exécutent des requêtes dans Amazon Redshift, celles-ci sont acheminées vers files d'attente de requêtes. Chaque file d'attente de requête contient un certain nombre d'emplacements de requête. Chaque file d'attente se voit affecter une partie de la mémoire disponible du cluster. La mémoire d'une file d'attente est répartie entre les emplacements de requête de la file d'attente. Vous pouvez activer Amazon Redshift pour que le service gère la simultanéité des requêtes en mode de gestion automatique de la charge de travail. Pour plus d'informations, consultez Implémentation de la gestion automatique de la charge de travail.

Ou vous pouvez configurer des propriétés de gestion de la charge de travail pour chaque file d'attente de requête. Ainsi, vous spécifiez la façon dont la mémoire est allouée entre les emplacements et comment les requêtes peuvent être acheminées vers des files d'attente spécifiques lors de l'exécution. Vous pouvez également configurer les propriétés de gestion de la charge de travail afin d'annuler les requêtes de longue durée. Vous pouvez également utiliser le paramètre wlm_query_slot_count, qui est distinct des propriétés de gestion de la charge de travail. Ce paramètre peut temporairement activer les requêtes afin d'utiliser plus de mémoire en allouant plusieurs emplacements.

Par défaut, Amazon Redshift configure les files d'attente de requêtes suivantes :

  • Une file d'attente de super-utilisateur

    La file d'attente de super-utilisateur est réservée aux super-utilisateurs uniquement et ne peut pas être configurée. Utilisez cette file d'attente uniquement lorsque vous avez besoin d'exécuter des requêtes qui affectent le système ou à des fins de dépannage. Par exemple, utilisez cette file d'attente lorsque vous avez besoin d'annuler une requête de longue durée d'un utilisateur ou d'ajouter des utilisateurs à la base de données. Ne l'utilisez pas pour exécuter des requêtes courantes. La file d'attente ne s'affiche pas dans la console, mais elle s'affiche dans les tables système de la base de données comme la cinquième file d'attente. Pour exécuter une requête dans la file d'attente du super-utilisateur, un utilisateur doit être connecté en tant que super-utilisateur et exécuter la requête à l'aide du groupe de requêtes superuser prédéfini.

  • Une file d'attente d'utilisateur par défaut

    La file d'attente par défaut est configurée initialement pour exécuter cinq requêtes simultanément. Vous pouvez modifier les propriétés de simultanéité, d'expiration et d'allocation de mémoire de la file d'attente par défaut, mais vous ne pouvez pas spécifier de groupes d'utilisateurs ou de groupes de requêtes. La file d'attente par défaut doit être la dernière file d'attente de la configuration de la charge de travail. Toutes les requêtes qui ne sont pas acheminées vers d'autres files d'attente s'exécutent dans la file d'attente par défaut.

Les files d'attente de requêtes sont définies dans la configuration WLM. La configuration WLM est un paramètre modifiable (wlm_json_configuration) dans un groupe de paramètres, qui peut être associé à un ou plusieurs clusters. Pour de plus amples informations, veuillez consulter Configuration de la gestion de la charge de travail dans le Amazon Redshift Cluster Management Guide.

Vous pouvez ajouter des files d'attente de requête supplémentaires à la configuration WLM par défaut (huit files d'attente de l'utilisateur au maximum). Vous pouvez configurer les éléments suivants pour chaque file d'attente de requête :

  • Mode de mise à l'échelle de la simultanéité

  • Niveau de simultanéité

  • Groupes d'utilisateurs

  • Groupes de requêtes

  • Pourcentage de mémoire WLM à utiliser

  • Délai WLM

  • Saut de file d'attente des requêtes WLM

  • Règles de surveillance de requête

Mode de mise à l'échelle de la simultanéité

Lorsque la mise à l'échelle de la simultanéité est activée, Amazon Redshift ajoute automatiquement de la capacité de cluster supplémentaire lorsque vous en avez besoin pour traiter une augmentation des requêtes de lecture simultanées. Les opérations d'écriture se poursuivent normalement sur votre cluster principal. Les utilisateurs voient les données les plus récentes, que les requêtes s'exécutent sur le cluster principal ou sur un cluster de mise à l'échelle de la simultanéité.

Vous gérez quelles sont les requêtes envoyées au cluster de mise à l'échelle de la simultanéité en configurant les files d'attente de la gestion de la charge de travail. Lorsque vous activez la mise à l'échelle de la simultanéité pour une file d'attente, les requêtes éligibles sont envoyées au cluster de mise à l'échelle de la simultanéité au lieu d'attendre en ligne. Pour plus d'informations, consultez Utilisation de la mise à l'échelle de la simultanéité.

Niveau de simultanéité

Les requêtes placées dans une file d'attente s'exécutent simultanément jusqu'à ce qu'elles atteignent le nombre d'emplacements de requêtes WLM ou le niveau de simultanéité défini pour cette file d'attente. Les requêtes suivantes attendent ensuite dans la file d'attente.

Note

Le niveau de simultanéité WLM est différent du nombre de connexions utilisateur simultanées qui peuvent être effectuées à un cluster. Pour en savoir plus, consultez Connexion à un cluster dans le Amazon Redshift Cluster Management Guide.

Dans une configuration WLM automatique (recommandée), le niveau de simultanéité est défini sur Auto. Pour plus d'informations, consultez Implémentation de la gestion automatique de la charge de travail.

Dans une configuration de gestion manuelle de la charge de travail, chaque file d'attente peut être configurée avec jusqu'à 50 emplacements de requêtes. Le nombre d'emplacements de requêtes WLM maximal pour toutes les files d'attente définies par l'utilisateur est de 50. La limite inclut la file d'attente par défaut, mais n'inclut pas la file d'attente réservée au super-utilisateur. Par défaut, Amazon Redshift alloue une part égale fixe de mémoire disponible à chaque file d'attente. Par défaut, Amazon Redshift alloue aussi une part égale fixe de mémoire d'une file d'attente à chaque emplacement de requête de la file d'attente. La proportion de mémoire allouée à chaque file d'attente est définie dans la configuration WLM à l'aide de la propriété memory_percent_to_use. Lors de l'exécution, vous pouvez substituer temporairement la quantité de mémoire affectée à une requête en définissant le paramètre wlm_query_slot_count afin de spécifier le nombre d'emplacements attribués à la requête.

Par défaut, les files d'attente WLM manuelles ont un niveau de simultanéité de 5. Votre charge de travail peut tirer profit d'un niveau de simultanéité plus élevé dans certains cas, notamment :

  • Si plusieurs petites requêtes sont obligées d'attendre les requêtes de longue durée, créez une file d'attente distincte avec un nombre d'emplacements supérieur et affectez les requêtes plus petites à cette file d'attente. Une file d'attente avec un niveau de simultanéité supérieur a moins de mémoire allouée à chaque emplacement de requête, mais les requêtes plus petites nécessitent moins de mémoire.

    Note

    Si vous activez l'accélération des requêtes courtes (SQA), WLM établit automatiquement la priorité des requêtes de courte durée sur les requêtes de longue durée, afin que vous n'ayez pas besoin d'une file d'attente distincte pour les requêtes courtes dans la plupart des flux de travail. Pour plus d'informations, consultez Utilisation de l'accélération des requêtes courtes.

  • Si vous avez plusieurs requêtes accédant chacune aux données sur une seule tranche, configurez une file d'attente WLM distincte pour exécuter ces requêtes simultanément. Amazon Redshift affecte des requêtes simultanées à des tranches distinctes, ce qui permet à plusieurs requêtes de s'exécuter en parallèle sur plusieurs tranches. Par exemple, si une requête est un agrégat simple avec un prédicat sur la clé de distribution, les données de la requête sont situées sur une seule tranche.

Si votre charge de travail nécessite plus de 15 requêtes pour s'exécuter en parallèle, nous vous recommandons d'activer la mise à l'échelle de la simultanéité. Cela est dû au fait que l'augmentation du nombre d'emplacements de requête au-dessus de 15 peut créer une contention pour les ressources système et limiter le débit global d'un seul cluster. Avec la mise à l'échelle de la simultanéité, vous pouvez exécuter des centaines de requêtes en parallèle jusqu'à un nombre configuré de clusters de mise à l'échelle de la simultanéité. Le nombre de clusters de mise à l'échelle de la simultanéité qui peuvent être utilisés est contrôlé par max_concurrency_scaling_clusters. Pour de plus amples informations sur la mise à l'échelle de la concurrence, veuillez consulter Utilisation de la mise à l'échelle de la simultanéité.

La mémoire qui est allouée à chaque file d'attente est répartie entre les emplacements de requête de cette file d'attente. La quantité de mémoire disponible pour une requête correspond à la mémoire allouée à l'emplacement de requête dans lequel la requête s'exécute. Cela est valable quel que soit le nombre de requêtes qui s'exécutent simultanément. Une requête qui peut s'exécuter entièrement dans la mémoire lorsque le nombre d'emplacements est de 5 peut avoir besoin d'écrire les résultats intermédiaires sur le disque si le nombre d'emplacements est passé à 20. Les E/S de disque supplémentaires peuvent dégrader les performances.

Si une requête spécifique a besoin de plus de mémoire que celle qui est allouée à un emplacement de requête unique, vous pouvez augmenter la mémoire disponible en augmentant le paramètre wlm_query_slot_count. L'exemple suivant affecte la valeur 10 à wlm_query_slot_count, effectue une opération VACUUM, puis réinitialise wlm_query_slot_count avec la valeur 1.

set wlm_query_slot_count to 10; vacuum; set wlm_query_slot_count to 1;

Pour plus d'informations, consultez Amélioration des performances des requêtes .

Groupes d'utilisateurs

Vous pouvez affecter un ensemble de groupes d'utilisateurs à une file d'attente en spécifiant chaque nom de groupe d'utilisateurs ou en utilisant des caractères génériques. Lorsqu'un membre d'un groupe d'utilisateurs répertorié exécute une requête, celle-ci s'exécute dans la file d'attente correspondante. Il n'y a pas de limite au nombre de groupes d'utilisateurs qui peut être assigné à une file d'attente. Pour de plus amples informations, veuillez consulter Wildcards

Groupes de requêtes

Vous pouvez affecter un ensemble de groupes de requêtes à une file d'attente en spécifiant chaque nom de groupe de requêtes ou en utilisant des caractères génériques. Un groupe de requêtes est simplement une étiquette. Au moment de l'exécution, vous pouvez affecter l'étiquette de groupe de requête à une série de requêtes. Toutes les requêtes qui sont affectées à un groupe de requêtes répertorié sont exécutées dans la file d'attente correspondante. Il n'y a pas de limite au nombre de groupes de requêtes qui peut être assigné à une file d'attente. Pour de plus amples informations, veuillez consulter Wildcards

Wildcards

Si les caractères génériques sont activés dans la configuration de file d'attente WLM, vous pouvez affecter des groupes d'utilisateurs et des groupes de requêtes à une file d'attente individuellement ou en utilisant des caractères génériques de style shell Unix. Le modèle correspondant est sensible à la casse.

Par exemple, le caractère générique « * » correspond à n'importe quel nombre de caractères. Ainsi, si vous ajoutez dba_* à la liste de groupes d'utilisateurs pour une file d'attente, toute requête exécutée par un utilisateur et appartenant à un groupe dont le nom commence par dba_ est affectée à cette file d'attente. Exemples : dba_admin ou DBA_primary, . Le caractère générique « ? » correspond à n'importe quel caractère unique. Ainsi, si la file d'attente comprend le groupe utilisateur dba?1, alors les groupes utilisateur nommés dba11 et dba21 correspondent, mais le groupe dba12 ne correspond pas.

Les caractères génériques sont désactivés par défaut.

Pourcentage de mémoire WLM à utiliser

Dans une configuration WLM automatique, le pourcentage de mémoire est défini sur auto. Pour plus d'informations, consultez Implémentation de la gestion automatique de la charge de travail.

Dans une configuration de gestion manuelle de la charge de travail, vous pouvez définir le paramètre WLM Memory Percent to Use pour spécifier la quantité de mémoire disponible qui est allouée à une requête. Par défaut, chaque file d'attente définie par l'utilisateur se voit allouer une part égale de la mémoire disponible pour les requêtes définies par l'utilisateur. Par exemple, si vous avez quatre files d'attente définies par l'utilisateur, chaque file d'attente reçoit 25 % de la mémoire disponible. La file d'attente du super-utilisateur dispose de sa propre mémoire allouée et ne peut pas être modifiée. Pour modifier l'allocation, vous affectez un pourcentage entier de la mémoire à chaque file d'attente, à concurrence d'un total de 100 %. La mémoire non allouée est gérée par Amazon Redshift et peut être temporairement affectée à une file d'attente, si celle-ci demande de la mémoire supplémentaire à des fins de traitement.

Par exemple, si vous configurez quatre files d'attente, vous pouvez allouer de la mémoire comme suit : 20 %, 30 %, 15 %, 15 %. Les 20 % restants ne sont pas alloués et sont gérés par le service.

Délai WLM

Le délai WLM (max_execution_time) est obsolète. Au lieu de cela, créez une règle de surveillance de requête (QRM) query_execution_time pour limiter le temps d'exécution écoulé d'une requête. Pour plus d'informations, consultez Règles de surveillance de requête WLM.

Pour limiter le délai imparti aux requêtes dans une file d'attente WLM donnée, vous pouvez définir la valeur du délai WLM pour chaque file d'attente. Le paramètre de délai spécifie le temps, en millisecondes, que Amazon Redshift attend pour qu'une requête s'exécute avant d'annuler la requête ou de replacer celle-ci. Le délai s'appuie sur la durée de l'exécution de la requête et n'inclut pas le temps d'attente dans une file d'attente.

WLM tente de replacer les instructions CREATE TABLE AS (CTAS) et les requêtes en lecture seule, telles que les instructions SELECT. Les requêtes ne pouvant être replacées sont annulées. Pour plus d'informations, consultez Saut de file d'attente des requêtes WLM.

Le délai WLM ne s'applique pas à une requête qui a atteint l'état returning. Pour afficher l'état d'une requête, consultez la table système STV_WLM_QUERY_STATE. Les instructions COPY et les opérations de maintenance, comme ANALYZE et VACUUM, ne sont pas assujetties au délai WLM.

La fonction de délai WLM est similaire au paramètre de configuration statement_timeout. La seule différence est que le paramètre de configuration statement_timeout s'applique à l'ensemble du cluster, alors que le délai WLM est spécifique à une seule file d'attente de la configuration WLM.

Si statement_timeout est également spécifié, la valeur la plus basse de statement_timeout et de délai WLM (max_execution_time) est utilisée.

Règles de surveillance de requête

Les règles de surveillance de requête définissent les limites de performance reposant sur les métriques pour les files d'attente WLM et spécifient quelle action exécuter quand une requête dépasse ces limites. Par exemple, pour une file d'attente dédiée aux requêtes de courte durée, vous pouvez créer une règle qui interrompt les requêtes qui s'exécutent pendant plus de 60 secondes. Si vous souhaitez effectuer un suivi des requêtes mal conçues, vous pouvez configurer une autre règle qui consigne les requêtes contenant des boucles imbriquées. Pour plus d'informations, consultez Règles de surveillance de requête WLM.