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 gestion de la charge de travail afin de créer des files d’attente distinctes pour les requêtes de longue durée et de courte durée.

Lorsque les utilisateurs exécutent des requêtes dans Amazon Redshift, celles-ci sont acheminées vers des 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 permettre à Amazon Redshift de gérer la concurrence des requêtes en WLM automatique. Pour de plus amples informations, veuillez consulter 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.

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. Lorsque vous utilisez le WLM manuel, 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 plus d’informations, consultez Configuration de la gestion de la charge de travail dans le Guide de la gestion du cluster Amazon Redshift.

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 et d’écriture simultanées. 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’être mises dans une file d’attente. Pour de plus amples informations, veuillez consulter 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é est différent du nombre de connexions utilisateur simultanées qu’un cluster peut accepter. Pour plus d’informations, consultez Connexion à un cluster dans le Guide de la gestion du cluster Amazon Redshift.

Dans une configuration WLM automatique, ce qui est recommandé, le niveau de simultanéité est réglé sur Auto. Amazon Redshift alloue dynamiquement de la mémoire aux requêtes, ce qui détermine par la suite le nombre de requêtes à exécuter simultanément. Il se base sur les ressources requises pour les requêtes en cours et les requêtes en file d’attente. La fonction Auto WLM n’est pas configurable. Pour de plus amples informations, veuillez consulter Implémentation de la gestion automatique de la charge de travail.

Dans une configuration WLM manuelle, Amazon Redshift alloue statiquement une quantité fixe de mémoire à chaque file d’attente. La mémoire de la file d’attente est répartie de manière égale entre les emplacements de requête. Par exemple, si une file d’attente se voit attribuer 20 % de la mémoire d’un cluster et dispose de 10 emplacements, chaque requête se voit attribuer 2 % de la mémoire du cluster. L’allocation de mémoire reste fixe quel que soit le nombre de requêtes exécutées simultanément. En raison de cette allocation de mémoire fixe, les requêtes qui s’exécutent entièrement en mémoire lorsque le nombre d’emplacements est de 5 peuvent écrire les résultats intermédiaires sur le disque si le nombre d’emplacements est porté à 20. Dans ce cas, la part de chaque requête dans la mémoire de la file d’attente passe de 1/5e à 1/20e. Les I/O de disque supplémentaires peuvent dégrader les performances.

Le nombre maximum d’emplacements pour toutes les files d’attente définies par l’utilisateur est de 50. Cela limite le nombre total d’emplacements pour toutes les files d’attente, y compris la file d’attente par défaut. La seule file d’attente qui n’est pas soumise à cette limite est la file d’attente réservée au super-utilisateur.

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 de plus amples informations, veuillez consulter Utilisation de l’accélération des requêtes courtes.

  • Si plusieurs de vos requêtes accèdent 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 d’être exécutées 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.

Exemple de WLM manuel

Cet exemple est un scénario WLM manuel simple qui montre comment les emplacements et la mémoire peuvent être alloués. Vous mettez en œuvre un WLM manuel avec trois files d’attente, qui sont les suivantes :

  • File d’attente d’ingestion de données : cette file d’attente est configurée pour l’ingestion de données. Elle se voit allouer 20 % de la mémoire du cluster et dispose de 5 emplacements. Par la suite, 5 requêtes peuvent être exécutées simultanément dans la file d’attente et chacune se voit attribuer 4 % de la mémoire.

  • File d’attente spécialiste des données : cette file d’attente est conçue pour les requêtes nécessitant beaucoup de mémoire. Elle se voit allouer 40 % de la mémoire du cluster et dispose de 5 emplacements. Par la suite, 5 requêtes peuvent être exécutées simultanément et chacune se voit attribuer 8 % de la mémoire.

  • File d’attente par défaut : cette file d’attente est destinée à la majorité des utilisateurs de l’organisation. Il s’agit notamment des groupes de vente et de comptabilité qui formulent généralement des requêtes courtes ou moyennes peu complexes. Elle se voit attribuer 40 % de la mémoire du cluster et dispose de 40 emplacements. 40 requêtes peuvent être exécutées simultanément dans cette file d’attente, chaque requête se voyant allouer 1 % de la mémoire. Il s’agit du nombre maximum d’emplacements qui peuvent être alloués à cette file d’attente, car la limite est de 50 pour toutes les files d’attente.

Si vous utilisez le WLM automatique et que votre charge de travail nécessite l’exécution de plus de 15 requêtes 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é est contrôlé par max_concurrency_scaling_clusters. Pour plus d’informations sur la mise à l’échelle de la concurrence, consultez Utilisation de la mise à l’échelle de la simultanéité.

Pour de plus amples informations, veuillez consulter 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 Affectation des requêtes aux files d’attente en fonction des groupes d’utilisateurs.

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 Affectation d’une requête à un groupe de requêtes.

Caractères génériques

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. dba_admin ou DBA_primary sont des exemples. 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 de gestion automatique de la charge de travail, le pourcentage de mémoire est défini sur auto. Pour de plus amples informations, veuillez consulter 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 %. Toute mémoire non allouée est gérée par Amazon Redshift et peut être donnée temporairement à une file d’attente si celle-ci demande de la mémoire supplémentaire pour le 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 de plus amples informations, veuillez consulter 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 timeout spécifie la durée, en millisecondes, pendant laquelle Amazon Redshift attend l’exécution d’une requête avant de l’annuler ou de la faire sauter. 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 de plus amples informations, veuillez consulter 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 annule 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 de plus amples informations, veuillez consulter Règles de surveillance de requête WLM.