Manuel de mise en œuvre WLM - 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.

Manuel de mise en œuvre WLM

Grâce au mode manuelWLM, vous pouvez gérer les performances du système et l'expérience de vos utilisateurs en modifiant la WLM configuration 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 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 activer Amazon Redshift pour gérer automatiquement la simultanéité des requêtes. WLM Pour de plus amples informations, veuillez consulter Implémentation automatique WLM.

Vous pouvez également configurer les WLM propriétés de chaque file d'attente de requêtes. 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 WLM propriétés pour 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 mode manuelWLM, vous pouvez modifier les propriétés de simultanéité, de délai d'attente et d'allocation de mémoire pour 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 de la WLM configuration. 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 WLM configuration. La WLM configuration 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êtes supplémentaires à la WLM configuration par défaut, jusqu'à un total de huit files d'attente utilisateur. 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

  • WLMpourcentage de mémoire à utiliser

  • WLMdélai d'expiration

  • WLMsaut dans la file d'attente des requêtes

  • 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 les requêtes envoyées au cluster de dimensionnement de la simultanéité en configurant des WLM files d'attente. 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 d'une file d'attente s'exécutent simultanément jusqu'à ce qu'elles atteignent le nombre d'emplacements de WLM requêtes, 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

WLMle niveau de simultanéité est différent du nombre de connexions utilisateur simultanées pouvant être établies avec un cluster. Pour plus d’informations, consultez Connexion à un cluster dans le Guide de la gestion du cluster Amazon Redshift.

Dans une WLM configuration automatique, ce qui est recommandé, le niveau de simultanéité est défini 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. Auto WLM n'est pas configurable. Pour de plus amples informations, veuillez consulter Implémentation automatique WLM.

Dans une WLM configuration 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 WLM files d'attente 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), elle donne WLM automatiquement la priorité aux requêtes courtes par rapport aux requêtes plus longues. Vous n'avez donc pas besoin d'une file d'attente séparée 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 vous avez plusieurs requêtes qui accèdent chacune aux données d'une seule tranche, configurez une WLM file d'attente 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.

Un WLM exemple de manuel

Cet exemple est un WLM scénario manuel simple qui montre comment les emplacements et la mémoire peuvent être alloués. Vous implémentez le manuel WLM 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 mode automatique WLM et que votre charge de travail nécessite plus de 15 requêtes pour s'exécuter en parallèle, nous vous recommandons d'activer le dimensionnement simultané. 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 la WLM file d'attente, vous pouvez attribuer des groupes d'utilisateurs et des groupes de requêtes à une file d'attente soit individuellement, soit en utilisant des caractères génériques de type 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.

WLMpourcentage de mémoire à utiliser

Dans une WLM configuration automatique, le pourcentage de mémoire est défini surauto. Pour de plus amples informations, veuillez consulter Implémentation automatique WLM.

Dans une WLM configuration manuelle, pour spécifier la quantité de mémoire disponible allouée à une requête, vous pouvez définir le WLM Memory Percent to Use paramètre. 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.

WLMdélai d'expiration

WLMtimeout (max_execution_time) est obsolète. Créez plutôt une règle de surveillance des requêtes (QMR) query_execution_time pour limiter le temps d'exécution d'une requête. Pour de plus amples informations, veuillez consulter WLMrègles de surveillance des requêtes.

Pour limiter la durée pendant laquelle les requêtes d'une WLM file d'attente donnée sont autorisées, vous pouvez définir la valeur du WLM délai d'attente 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.

WLMtente d'exécuter des instructions hop CREATETABLEEN TANT QUE (CTAS) et des requêtes en lecture seule, telles SELECT que des instructions. Les requêtes ne pouvant être replacées sont annulées. Pour de plus amples informations, veuillez consulter WLMsaut dans la file d'attente des requêtes.

WLMle délai d'attente ne s'applique pas à une requête qui a atteint l'état de renvoi. Pour afficher l’état d’une requête, consultez la table système STV_WLM_QUERY_STATE. COPYles déclarations et les opérations de maintenance, telles que ANALYZE etVACUUM, ne sont pas soumises à un WLM délai d'expiration.

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

Si cette statement_timeout valeur est également spécifiée, la valeur inférieure de statement_timeout et WLM timeout (max_execution_time) est utilisée.

Règles de surveillance de requête

Les règles de surveillance des requêtes définissent les limites de performance basées sur des métriques pour les WLM files d'attente et spécifient les mesures à prendre lorsqu'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 WLMrègles de surveillance des requêtes.