ALTER WORKLOAD GROUP (Transact-SQL)

Sélectionner un produit

Sur la ligne suivante, sélectionnez le nom du produit qui vous intéresse afin d’afficher uniquement les informations qui le concernent.

* SQL Server *  

 

SQL Server et SQL Managed Instance

Modifie une configuration de groupe de charge de travail Resource Governor existante, et éventuellement l’assigne à un pool de ressources Resource Governor.

Remarque

Pour Azure SQL Managed Instance, vous devez être dans le contexte de la base de données pour modifier la master configuration resource Governor.

Conventions de la syntaxe Transact-SQL.

Syntaxe

ALTER WORKLOAD GROUP { group_name | "default" }
[ WITH
    ([ IMPORTANCE = { LOW | MEDIUM | HIGH } ]
      [ [ , ] REQUEST_MAX_MEMORY_GRANT_PERCENT = value ]
      [ [ , ] REQUEST_MAX_CPU_TIME_SEC = value ]
      [ [ , ] REQUEST_MEMORY_GRANT_TIMEOUT_SEC = value ]
      [ [ , ] MAX_DOP = value ]
      [ [ , ] GROUP_MAX_REQUESTS = value ] )
]
[ USING { pool_name | "default" } ]
[ ; ]

Arguments

group_name | "default"

Nom d’un groupe de charge de travail existant défini par l’utilisateur ou du groupe de charge de travail Resource Governor par défaut. Resource Governor crée les groupes « par défaut » et internes lorsque SQL Server est installé.

L’option « default » doit être placée entre des guillemets doubles ("") ou des crochets ([]) quand elle est utilisée avec l’instruction ALTER WORKLOAD GROUP pour éviter tout conflit avec DEFAULT, qui est un mot réservé au système. Pour plus d'informations, consultez Database Identifiers.

Les groupes de charges de travail et les pools de ressources prédéfinis utilisent tous des noms en minuscule, tels que « default ». Ce facteur doit être pris en considération pour les serveurs qui utilisent un classement qui respecte la casse. Les serveurs avec un classement insensible à la casse, comme SQL_Latin1_General_CP1_CI_AS, traiteront "default" et "Default" de la même manière.

IMPORTANCE = { LOW | MEDIUM | HIGH }

Spécifie l'importance relative d'une demande dans le groupe de charges de travail. Elle prend l'une des valeurs suivantes :

  • LOW
  • MEDIUM (valeur par défaut)
  • HIGH

En interne, chaque paramètre d’importance est stocké sous la forme d’un nombre utilisé pour les calculs.

Le paramètre IMPORTANCE est local par rapport au pool de ressources : les groupes de charge de travail d’importance différente à l’intérieur du même pool de ressources s’affectent mutuellement, mais n’affectent pas les groupes de charge de travail dans un autre pool de ressources.

REQUEST_MAX_MEMORY_GRANT_PERCENT = value

Spécifie la quantité de mémoire maximale qu'une requête unique peut prendre du pool. value est un pourcentage relatif à la taille du pool de ressources spécifiée par MAX_MEMORY_PERCENT. La valeur par défaut est 25. La quantité spécifiée fait uniquement référence à la mémoire allouée à l'exécution de la requête.

Jusqu’à SQL Server 2017 (14.x), value est un int et la plage autorisée est comprise entre 1 et 100. À compter de SQL Server 2019 (15.x), la valeur est un type de données flottant et la plage autorisée est comprise entre 0 et 100.

Important

L’affectation de la valeur 0 à value empêche l’exécution de requêtes avec les opérations SORT et HASH JOIN dans les groupes de charges de travail définis par l’utilisateur.

Il est déconseillé d’affecter à value une valeur supérieure à 70, car le serveur risque de ne pas pouvoir mettre de côté suffisamment de mémoire disponible si d’autres requêtes simultanées s’exécutent. Cela risque de provoquer l'erreur de délai d'attente de requête 8645.

Si les besoins en mémoire de la requête dépassent la limite spécifiée par ce paramètre, le serveur effectue les opérations suivantes :

  • Pour les groupes de charges de travail définis par l'utilisateur, le serveur essaie de réduire le degré de parallélisme de la requête jusqu'à ce que ses besoins en mémoire tombent sous la limite ou jusqu'à ce que le degré de parallélisme soit égal à 1. Si les besoins en mémoire de la requête sont encore supérieurs à la limite, l'erreur 8657 se produit.
  • Pour les groupes de charges de travail internes et par défaut, le serveur autorise la requête à obtenir la mémoire requise.

Ces deux cas sont sujets à l’erreur de délai d’attente 8645 si la mémoire physique du serveur est insuffisante.

REQUEST_MAX_CPU_TIME_SEC = value

Spécifie la quantité maximale de temps processeur, en secondes, qu'une demande peut utiliser. value doit être égal à 0 ou un entier positif. La valeur par défaut de value est 0, ce qui signifie illimité. Par défaut, Resource Governor n’empêche pas une demande de continuer si le temps maximal est dépassé. Toutefois, un événement sera généré. Pour plus d’informations, consultez Classe d’événements CPU Threshold Exceeded.

À compter de SQL Server 2016 (13.x) SP2 et SQL Server 2017 (14.x) CU3, et quand l’indicateur de trace 2422 est utilisé, Resource Governor abandonne une requête en cas de dépassement de la durée maximale.

REQUEST_MEMORY_GRANT_TIMEOUT_SEC = value

Spécifie la durée maximale, en secondes, pendant laquelle une requête peut attendre que l'allocation de mémoire (mémoire tampon de travail) devienne disponible.

Une requête n’échoue pas toujours lorsque le délai d’expiration d’allocation mémoire est atteint. Une requête échoue seulement si le nombre de requêtes exécutées simultanément est trop élevé. Autrement, la requête risque d'obtenir uniquement l'allocation mémoire minimale, d'où une dégradation des performances.

value doit être un entier positif. La valeur par défaut de value, 0, utilise un calcul interne basé sur le coût de requête pour déterminer le délai maximal.

MAX_DOP = value

Spécifie le degré maximal de parallélisme (DOP) pour les demandes parallèles. value doit être égal à 0 ou un entier positif compris entre 1 et 255. Quand value a la valeur 0, le serveur choisit le degré maximal de parallélisme. Il s’agit de la valeur par défaut et recommandée.

La valeur réelle définie par le moteur de base de données pour MAX_DOP peut être inférieure à la valeur spécifiée. La valeur finale est déterminée par la formule min(255, nombre d’unités centrales) .

Attention

La modification de MAX_DOP peut affecter de façon négative les performances d'un serveur. Si vous devez modifier MAX_DOP, nous recommandons qu'il soit défini sur une valeur inférieure ou égale au nombre maximal de planificateurs matériels présents dans un nœud NUMA unique. Nous vous recommandons de ne pas affecter à MAX_DOP une valeur supérieure à 8.

MAX_DOP est géré comme suit :

  • MAX_DOP en tant qu’indicateur de requête est honoré tant qu’il ne dépasse pas le groupe de charge de travail MAX_DOP.

  • MAX_DOP en tant qu'indicateur de requête remplace toujours l'option « max degree of parallelism » de sp_configure.

  • Le groupe de charge de travail MAX_DOP remplace le degré maximal de parallélisme sp_configure.

  • Si la requête est marquée comme étant (MAX_DOP = 1) en série au moment de la compilation, elle ne peut être reconvertie en requête parallèle au moment de l’exécution, indépendamment du groupe de charge de travail ou du paramètre sp_configure.

Une fois le degré maximal de parallélisme (DOP) configuré, il ne peut être diminué que sous la sollicitation de l'allocation de mémoire. La reconfiguration du groupe de charges de travail n’est pas visible lors de l’attente dans la file d’attente d’allocation de mémoire.

GROUP_MAX_REQUESTS = value

Spécifie le nombre maximal de demandes simultanées autorisées à s'exécuter dans le groupe de charges de travail. value doit être égal à 0 ou un entier positif. La valeur par défaut de value, 0, autorise un nombre illimité de demandes. Lorsque le nombre maximal de demandes est atteint, un utilisateur de ce groupe peut se connecter, mais il est placé en attente jusqu’à ce que le nombre de demandes simultanées soit inférieur à la valeur spécifiée.

USING { pool_name | "default" }

Associe le groupe de charge de travail au pool de ressources défini par l’utilisateur et identifié par pool_name, ce qui revient en fait à placer le groupe de charge de travail dans le pool de ressources. Si pool_name n’est pas fourni, ou si l’argument USING n’est pas utilisé, le groupe de charge de travail est placé dans le pool par défaut Resource Governor prédéfini.

L’option « default » respecte la casse et doit être placée entre des guillemets doubles ("") ou des crochets ([]) quand elle est utilisée avec l’instruction ALTER WORKLOAD GROUP pour éviter tout conflit avec DEFAULT, qui est un mot réservé au système. Pour plus d'informations, consultez Database Identifiers.

Remarques

ALTER WORKLOAD GROUP est autorisé sur le groupe par défaut.

Les modifications apportées à la configuration du groupe de charge de travail ne sont pas appliquées tant que l’instruction ALTER RESOURCE GOVERNOR RECONFIGURE n’est pas exécutée. Quand vous modifiez un paramètre qui affecte le plan, le nouveau paramètre prend effet uniquement dans les plans précédemment mis en cache après l’exécution de DBCC FREEPROCCACHE (*pool_name*)pool_name est le nom d’un pool de ressources Resource Governor auquel le groupe de charges de travail est associé.

  • Si vous affectez la valeur 1 à MAX_DOP, l’exécution de DBCC FREEPROCCACHE n’est pas obligatoire, car des plans parallèles peuvent s’exécuter en mode série. Toutefois, cela risque de ne pas être aussi efficace qu’un plan compilé en tant que plan en série.

  • Si vous remplacez la valeur 1 de MAX_DOP par 0 ou une valeur supérieure à 1, l’exécution de DBCC FREEPROCCACHE n’est pas obligatoire. Toutefois, les plans en série ne pouvant pas s’exécuter en parallèle, l’effacement du cache respectif permettra aux nouveaux plans d’être compilés à l’aide du parallélisme.

Attention

L’effacement des plans mis en cache à partir d’un pool de ressources associé à plusieurs groupes de charges de travail affecte tous les groupes de charges de travail contenant le pool de ressources défini par l’utilisateur identifié par pool_name.

Quand vous exécutez des instructions DDL, vous devez connaître les états Resource Governor. Pour plus d’informations, consultez Resource Governor.

REQUEST_MEMORY_GRANT_PERCENT : Dans SQL Server 2005 (9.x), la création d’index est autorisée à utiliser une mémoire d’espace de travail supérieure à celle initialement allouée afin d’améliorer les performances. Cette gestion spéciale est prise en charge par le Gouverneur de ressources dans les versions ultérieures, toutefois, l'allocation initiale et toute allocation de mémoire supplémentaire sont limitées par les paramètres du pool de ressources et du groupe de charge de travail.

Création d’un index sur une table partitionnée

La mémoire consommée par la création d'index sur une table partitionnée non alignée est proportionnelle au nombre de partitions impliquées. Si la mémoire totale requise dépasse la limite par requête (REQUEST_MAX_MEMORY_GRANT_PERCENT) imposée par le paramètre du groupe de charges de travail de Resource Governor, cette création d’index peut échouer. Étant donné que le groupe de charge de travail "default" autorise une requête à dépasser la limite par requête avec la mémoire minimale requise pour démarrer la compatibilité pour SQL Server 2005 (9.x), l'utilisateur peut être en mesure d'exécuter la même création d'index dans le groupe de charge de travail "default", si le pool de ressources "default" possède assez de mémoire totale configurée pour exécuter cette requête.

Autorisations

Nécessite l'autorisation CONTROL SERVER.

Exemples

L'exemple suivant indique comment modifier l'importance des demandes dans le groupe par défaut en remplaçant la valeur MEDIUM par LOW.

ALTER WORKLOAD GROUP "default"
WITH (IMPORTANCE = LOW);
GO
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO

L’exemple suivant indique comment déplacer un groupe de charge de travail du pool dans lequel il est contenu vers le pool par défaut.

ALTER WORKLOAD GROUP adHoc
USING [default];
GO
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO

Voir aussi

* SQL Managed Instance *  

 

SQL Server et SQL Managed Instance

Modifie une configuration de groupe de charge de travail Resource Governor existante, et éventuellement l’assigne à un pool de ressources Resource Governor.

Remarque

Pour Azure SQL Managed Instance, vous devez être dans le contexte de la base de données pour modifier la master configuration resource Governor.

Conventions de la syntaxe Transact-SQL.

Syntaxe

ALTER WORKLOAD GROUP { group_name | "default" }
[ WITH
    ([ IMPORTANCE = { LOW | MEDIUM | HIGH } ]
      [ [ , ] REQUEST_MAX_MEMORY_GRANT_PERCENT = value ]
      [ [ , ] REQUEST_MAX_CPU_TIME_SEC = value ]
      [ [ , ] REQUEST_MEMORY_GRANT_TIMEOUT_SEC = value ]
      [ [ , ] MAX_DOP = value ]
      [ [ , ] GROUP_MAX_REQUESTS = value ] )
]
[ USING { pool_name | "default" } ]
[ ; ]

Arguments

group_name | "default"

Nom d’un groupe de charge de travail existant défini par l’utilisateur ou du groupe de charge de travail Resource Governor par défaut. Resource Governor crée les groupes « par défaut » et internes lorsque SQL Server est installé.

L’option « default » doit être placée entre des guillemets doubles ("") ou des crochets ([]) quand elle est utilisée avec l’instruction ALTER WORKLOAD GROUP pour éviter tout conflit avec DEFAULT, qui est un mot réservé au système. Pour plus d'informations, consultez Database Identifiers.

Les groupes de charges de travail et les pools de ressources prédéfinis utilisent tous des noms en minuscule, tels que « default ». Ce facteur doit être pris en considération pour les serveurs qui utilisent un classement qui respecte la casse. Les serveurs avec un classement insensible à la casse, comme SQL_Latin1_General_CP1_CI_AS, traiteront "default" et "Default" de la même manière.

IMPORTANCE = { LOW | MEDIUM | HIGH }

Spécifie l'importance relative d'une demande dans le groupe de charges de travail. Elle prend l'une des valeurs suivantes :

  • LOW
  • MEDIUM (valeur par défaut)
  • HIGH

En interne, chaque paramètre d’importance est stocké sous la forme d’un nombre utilisé pour les calculs.

Le paramètre IMPORTANCE est local par rapport au pool de ressources : les groupes de charge de travail d’importance différente à l’intérieur du même pool de ressources s’affectent mutuellement, mais n’affectent pas les groupes de charge de travail dans un autre pool de ressources.

REQUEST_MAX_MEMORY_GRANT_PERCENT = value

Spécifie la quantité de mémoire maximale qu'une requête unique peut prendre du pool. value est un pourcentage relatif à la taille du pool de ressources spécifiée par MAX_MEMORY_PERCENT. La valeur par défaut est 25. La quantité spécifiée fait uniquement référence à la mémoire allouée à l'exécution de la requête.

Jusqu’à SQL Server 2017 (14.x), value est un int et la plage autorisée est comprise entre 1 et 100. À compter de SQL Server 2019 (15.x), la valeur est un type de données flottant et la plage autorisée est comprise entre 0 et 100.

Important

L’affectation de la valeur 0 à value empêche l’exécution de requêtes avec les opérations SORT et HASH JOIN dans les groupes de charges de travail définis par l’utilisateur.

Il est déconseillé d’affecter à value une valeur supérieure à 70, car le serveur risque de ne pas pouvoir mettre de côté suffisamment de mémoire disponible si d’autres requêtes simultanées s’exécutent. Cela risque de provoquer l'erreur de délai d'attente de requête 8645.

Si les besoins en mémoire de la requête dépassent la limite spécifiée par ce paramètre, le serveur effectue les opérations suivantes :

  • Pour les groupes de charges de travail définis par l'utilisateur, le serveur essaie de réduire le degré de parallélisme de la requête jusqu'à ce que ses besoins en mémoire tombent sous la limite ou jusqu'à ce que le degré de parallélisme soit égal à 1. Si les besoins en mémoire de la requête sont encore supérieurs à la limite, l'erreur 8657 se produit.
  • Pour les groupes de charges de travail internes et par défaut, le serveur autorise la requête à obtenir la mémoire requise.

Ces deux cas sont sujets à l’erreur de délai d’attente 8645 si la mémoire physique du serveur est insuffisante.

REQUEST_MAX_CPU_TIME_SEC = value

Spécifie la quantité maximale de temps processeur, en secondes, qu'une demande peut utiliser. value doit être égal à 0 ou un entier positif. La valeur par défaut de value est 0, ce qui signifie illimité. Par défaut, Resource Governor n’empêche pas une demande de continuer si le temps maximal est dépassé. Toutefois, un événement sera généré. Pour plus d’informations, consultez Classe d’événements CPU Threshold Exceeded.

À compter de SQL Server 2016 (13.x) SP2 et SQL Server 2017 (14.x) CU3, et quand l’indicateur de trace 2422 est utilisé, Resource Governor abandonne une requête en cas de dépassement de la durée maximale.

REQUEST_MEMORY_GRANT_TIMEOUT_SEC = value

Spécifie la durée maximale, en secondes, pendant laquelle une requête peut attendre que l'allocation de mémoire (mémoire tampon de travail) devienne disponible.

Une requête n’échoue pas toujours lorsque le délai d’expiration d’allocation mémoire est atteint. Une requête échoue seulement si le nombre de requêtes exécutées simultanément est trop élevé. Autrement, la requête risque d'obtenir uniquement l'allocation mémoire minimale, d'où une dégradation des performances.

value doit être un entier positif. La valeur par défaut de value, 0, utilise un calcul interne basé sur le coût de requête pour déterminer le délai maximal.

MAX_DOP = value

Spécifie le degré maximal de parallélisme (DOP) pour les demandes parallèles. value doit être égal à 0 ou un entier positif compris entre 1 et 255. Quand value a la valeur 0, le serveur choisit le degré maximal de parallélisme. Il s’agit de la valeur par défaut et recommandée.

La valeur réelle définie par le moteur de base de données pour MAX_DOP peut être inférieure à la valeur spécifiée. La valeur finale est déterminée par la formule min(255, nombre d’unités centrales) .

Attention

La modification de MAX_DOP peut affecter de façon négative les performances d'un serveur. Si vous devez modifier MAX_DOP, nous recommandons qu'il soit défini sur une valeur inférieure ou égale au nombre maximal de planificateurs matériels présents dans un nœud NUMA unique. Nous vous recommandons de ne pas affecter à MAX_DOP une valeur supérieure à 8.

MAX_DOP est géré comme suit :

  • MAX_DOP en tant qu’indicateur de requête est honoré tant qu’il ne dépasse pas le groupe de charge de travail MAX_DOP.

  • MAX_DOP en tant qu'indicateur de requête remplace toujours l'option « max degree of parallelism » de sp_configure.

  • Le groupe de charge de travail MAX_DOP remplace le degré maximal de parallélisme sp_configure.

  • Si la requête est marquée comme étant (MAX_DOP = 1) en série au moment de la compilation, elle ne peut être reconvertie en requête parallèle au moment de l’exécution, indépendamment du groupe de charge de travail ou du paramètre sp_configure.

Une fois le degré maximal de parallélisme (DOP) configuré, il ne peut être diminué que sous la sollicitation de l'allocation de mémoire. La reconfiguration du groupe de charges de travail n’est pas visible lors de l’attente dans la file d’attente d’allocation de mémoire.

GROUP_MAX_REQUESTS = value

Spécifie le nombre maximal de demandes simultanées autorisées à s'exécuter dans le groupe de charges de travail. value doit être égal à 0 ou un entier positif. La valeur par défaut de value, 0, autorise un nombre illimité de demandes. Lorsque le nombre maximal de demandes est atteint, un utilisateur de ce groupe peut se connecter, mais il est placé en attente jusqu’à ce que le nombre de demandes simultanées soit inférieur à la valeur spécifiée.

USING { pool_name | "default" }

Associe le groupe de charge de travail au pool de ressources défini par l’utilisateur et identifié par pool_name, ce qui revient en fait à placer le groupe de charge de travail dans le pool de ressources. Si pool_name n’est pas fourni, ou si l’argument USING n’est pas utilisé, le groupe de charge de travail est placé dans le pool par défaut Resource Governor prédéfini.

L’option « default » respecte la casse et doit être placée entre des guillemets doubles ("") ou des crochets ([]) quand elle est utilisée avec l’instruction ALTER WORKLOAD GROUP pour éviter tout conflit avec DEFAULT, qui est un mot réservé au système. Pour plus d'informations, consultez Database Identifiers.

Remarques

ALTER WORKLOAD GROUP est autorisé sur le groupe par défaut.

Les modifications apportées à la configuration du groupe de charge de travail ne sont pas appliquées tant que l’instruction ALTER RESOURCE GOVERNOR RECONFIGURE n’est pas exécutée. Quand vous modifiez un paramètre qui affecte le plan, le nouveau paramètre prend effet uniquement dans les plans précédemment mis en cache après l’exécution de DBCC FREEPROCCACHE (*pool_name*)pool_name est le nom d’un pool de ressources Resource Governor auquel le groupe de charges de travail est associé.

  • Si vous affectez la valeur 1 à MAX_DOP, l’exécution de DBCC FREEPROCCACHE n’est pas obligatoire, car des plans parallèles peuvent s’exécuter en mode série. Toutefois, cela risque de ne pas être aussi efficace qu’un plan compilé en tant que plan en série.

  • Si vous remplacez la valeur 1 de MAX_DOP par 0 ou une valeur supérieure à 1, l’exécution de DBCC FREEPROCCACHE n’est pas obligatoire. Toutefois, les plans en série ne pouvant pas s’exécuter en parallèle, l’effacement du cache respectif permettra aux nouveaux plans d’être compilés à l’aide du parallélisme.

Attention

L’effacement des plans mis en cache à partir d’un pool de ressources associé à plusieurs groupes de charges de travail affecte tous les groupes de charges de travail contenant le pool de ressources défini par l’utilisateur identifié par pool_name.

Quand vous exécutez des instructions DDL, vous devez connaître les états Resource Governor. Pour plus d’informations, consultez Resource Governor.

REQUEST_MEMORY_GRANT_PERCENT : Dans SQL Server 2005 (9.x), la création d’index est autorisée à utiliser une mémoire d’espace de travail supérieure à celle initialement allouée afin d’améliorer les performances. Cette gestion spéciale est prise en charge par le Gouverneur de ressources dans les versions ultérieures, toutefois, l'allocation initiale et toute allocation de mémoire supplémentaire sont limitées par les paramètres du pool de ressources et du groupe de charge de travail.

Création d’un index sur une table partitionnée

La mémoire consommée par la création d'index sur une table partitionnée non alignée est proportionnelle au nombre de partitions impliquées. Si la mémoire totale requise dépasse la limite par requête (REQUEST_MAX_MEMORY_GRANT_PERCENT) imposée par le paramètre du groupe de charges de travail de Resource Governor, cette création d’index peut échouer. Étant donné que le groupe de charge de travail "default" autorise une requête à dépasser la limite par requête avec la mémoire minimale requise pour démarrer la compatibilité pour SQL Server 2005 (9.x), l'utilisateur peut être en mesure d'exécuter la même création d'index dans le groupe de charge de travail "default", si le pool de ressources "default" possède assez de mémoire totale configurée pour exécuter cette requête.

Autorisations

Nécessite l'autorisation CONTROL SERVER.

Exemples

L'exemple suivant indique comment modifier l'importance des demandes dans le groupe par défaut en remplaçant la valeur MEDIUM par LOW.

ALTER WORKLOAD GROUP "default"
WITH (IMPORTANCE = LOW);
GO
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO

L’exemple suivant indique comment déplacer un groupe de charge de travail du pool dans lequel il est contenu vers le pool par défaut.

ALTER WORKLOAD GROUP adHoc
USING [default];
GO
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO

Voir aussi

* Azure Synapse
Analytics *
 

 

Azure Synapse Analytics

Modifie un groupe de charge de travail existant.

Pour plus d’informations sur la façon dont ALTER WORKLOAD GROUP se comporte sur un système avec des demandes en cours d’exécution et en file d’attente, consultez la section sur le comportement de ALTER WORKLOAD GROUP ci-dessous.

Les restrictions en place pour CREATE WORKLOAD GROUP s’appliquent également à ALTER WORKLOAD GROUP. Avant de modifier des paramètres, interrogez sys.workload_management_workload_groups pour vérifier que les valeurs se trouvent dans des plages acceptables.

Syntaxe

ALTER WORKLOAD GROUP group_name
WITH
([ MIN_PERCENTAGE_RESOURCE = value ]
  [ [ , ] CAP_PERCENTAGE_RESOURCE = value ]
  [ [ , ] REQUEST_MIN_RESOURCE_GRANT_PERCENT = value ]
  [ [ , ] REQUEST_MAX_RESOURCE_GRANT_PERCENT = value ]
  [ [ , ] IMPORTANCE = { LOW | BELOW_NORMAL | NORMAL | ABOVE_NORMAL | HIGH }]
  [ [ , ] QUERY_EXECUTION_TIMEOUT_SEC = value ] )
  [ ; ]

Arguments

group_name

Nom du groupe de charge de travail défini par l’utilisateur existant en cours de modification. group_name n’est pas modifiable.

MIN_PERCENTAGE_RESOURCE = valeur

La valeur est une plage d’entiers comprise entre 0 et 100. Quand vous modifiez MIN_PERCENTAGE_RESOURCE, la somme des valeurs MIN_PERCENTAGE_RESOURCE de tous les groupes de charge de travail ne peut pas dépasser 100. Quand vous modifiez MIN_PERCENTAGE_RESOURCE, toutes les requêtes en cours d’exécution doivent être terminées dans le groupe de charge de travail pour que la commande aboutisse. Pour plus d’informations, consultez la section Comportement de ALTER WORKLOAD GROUP dans cet article.

CAP_PERCENTAGE_RESOURCE = valeur

La valeur est une plage d’entiers comprise entre 1 et 100. La valeur de CAP_PERCENTAGE_RESOURCE ne peut pas être supérieure à MIN_PERCENTAGE_RESOURCE. Quand vous modifiez CAP_PERCENTAGE_RESOURCE, toutes les requêtes en cours d’exécution doivent être terminées dans le groupe de charge de travail pour que la commande aboutisse. Pour plus d’informations, consultez la section Comportement de ALTER WORKLOAD GROUP dans cet article.

REQUEST_MIN_RESOURCE_GRANT_PERCENT = valeur

La valeur est un décimal compris entre 0,75 et 100,00. La valeur de REQUEST_MIN_RESOURCE_GRANT_PERCENT doit être un facteur de MIN_PERCENTAGE_RESOURCE et être inférieure à CAP_PERCENTAGE_RESOURCE.

REQUEST_MAX_RESOURCE_GRANT_PERCENT = valeur

La valeur est un décimal et doit être supérieure à REQUEST_MIN_RESOURCE_GRANT_PERCENT.

IMPORTANCE = { LOW | BELOW_NORMAL | NORMAL | ABOVE_NORMAL | HIGH }

Modifie l’importance par défaut d’une demande pour le groupe de charge de travail.

QUERY_EXECUTION_TIMEOUT_SEC = valeur

Modifie la durée maximale, exprimée en secondes, pendant laquelle une requête peut s’exécuter avant d’être annulée. La valeur doit être égale à 0 ou être un entier positif. La valeur par défaut est 0, ce qui signifie qu’elle est illimitée.

Autorisations

Nécessite l’autorisation CONTROL DATABASE.

Exemple

L’exemple ci-dessous vérifie les valeurs de l’affichage catalogue pour un groupe de charge de travail nommé wgDataLoads et change les valeurs.

SELECT *
FROM sys.workload_management_workload_groups
WHERE [name] = 'wgDataLoads'

ALTER WORKLOAD GROUP wgDataLoads WITH
( MIN_PERCENTAGE_RESOURCE            = 40
, CAP_PERCENTAGE_RESOURCE            = 80
, REQUEST_MIN_RESOURCE_GRANT_PERCENT = 10 )

Comportement de ALTER WORKLOAD GROUP

À tout moment, le système compte trois types de demandes :

  • Les demandes qui n’ont pas encore été classées.
  • Les demandes qui ont été classées et qui sont en attente de verrous d’objets ou de ressources système.
  • Les demandes qui sont classées et en cours d’exécution.

En fonction des propriétés d’un groupe de charge de travail en cours de modification, le moment auquel les paramètres prennent effet varie.

Importance ou query_execution_timeout

Pour les propriétés importance et query_execution_timeout, les demandes non classées récupèrent les nouvelles valeurs de configuration. Les demandes en attente et en cours d’exécution s’exécutent avec l’ancienne configuration. La demande ALTER WORKLOAD GROUP s’exécute immédiatement, qu’il y ait ou non des requêtes en cours d’exécution dans le groupe de charge de travail.

REQUEST_MIN_RESOURCE_GRANT_PERCENT ou REQUEST_MAX_RESOURCE_GRANT_PERCENT

Pour REQUEST_MIN_RESOURCE_GRANT_PERCENT et REQUEST_MAX_RESOURCE_GRANT_PERCENT, les demandes en cours d’exécution le sont avec l’ancienne configuration. Les demandes en attente et celles non classifiées récupèrent les nouvelles valeurs de configuration. La demande ALTER WORKLOAD GROUP s’exécute immédiatement, qu’il y ait ou non des requêtes en cours d’exécution dans le groupe de charge de travail.

MIN_PERCENTAGE_RESOURCE ou CAP_PERCENTAGE_RESOURCE

Pour MIN_PERCENTAGE_RESOURCE et CAP_PERCENTAGE_RESOURCE, les demandes en cours d’exécution le sont avec l’ancienne configuration. Les demandes en attente et celles non classifiées récupèrent les nouvelles valeurs de configuration.

Le changement de MIN_PERCENTAGE_RESOURCE et de CAP_PERCENTAGE_RESOURCE nécessite le drainage des demandes en cours d’exécution dans le groupe de charge de travail en cours de modification. Si vous diminuez MIN_PERCENTAGE_RESOURCE, les ressources libérées sont retournées au pool de partage et accessibles aux demandes d’autres groupes de charge de travail. Inversement, l’augmentation de MIN_PERCENTAGE_RESOURCE ne prend effet que lorsque les demandes utilisant uniquement les ressources nécessaires du pool partagé sont terminées. L’opération ALTER WORKLOAD GROUP a un accès prioritaire aux ressources partagées par rapport aux autres requêtes en attente d’exécution sur le pool partagé. Si la somme de MIN_PERCENTAGE_RESOURCE dépasse 100 %, la demande ALTER WORKLOAD GROUP échoue immédiatement.

Comportement du verrouillage

La modification d’un groupe de charge de travail nécessite un verrou global sur tous les groupes de charge de travail. Une demande de modification d’un groupe de charge de travail est mise en file d’attente derrière les demandes de création ou de suppression de groupe de charge de travail déjà soumises. Si plusieurs instructions ALTER sont soumises en même temps, elles sont traitées dans l’ordre de soumission.

Voir aussi