Partager via


ALTER WORKLOAD GROUP (Transact-SQL)

Sélectionner un produit

Dans la ligne suivante, sélectionnez le nom du produit qui vous intéresse, et seules les informations de ce produit sont affichées.

* SQL Server *  

SQL Managed Instance

Azure Synapse
d’analytique

 

SQL Server et SQL Managed Instance

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

Note

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

conventions de 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 | [par défaut]

Nom d’un groupe de charge de travail défini par l’utilisateur existant ou du groupe de charge de travail intégré default resource governor.

default doit être entre crochets ([]) ou guillemets ("") lorsqu’ils sont utilisés avec ALTER WORKLOAD GROUP pour éviter un conflit avec DEFAULT, qui est un mot réservé système. Pour plus d’informations, consultez identificateurs de base de données.

Les pools de ressources intégrés et les groupes de charge de travail utilisent tous les noms minuscules, tels que default. Utilisez les default minuscules sur les serveurs qui utilisent un classement respectant la casse. Les serveurs dont le classement ne respecte pas la casse traitent default, Defaultet DEFAULT comme la même valeur.

IMPORTANCE = { LOW | MEDIUM | HIGH }

Spécifie l’importance relative d’une requête dans le groupe de charge de travail. La valeur par défaut est MEDIUM.

IMPORTANCE est local dans le pool de ressources qui contient le groupe de charge de travail. Les groupes de charges de travail d’une importance différente à l’intérieur du même pool de ressources affectent les uns les autres, mais n’affectent pas les groupes de charges de travail dans d’autres pools de ressources.

REQUEST_MAX_MEMORY_GRANT_PERCENT = valeur

Spécifie la quantité maximale de mémoire de l’espace de travail de requête qu’une seule requête peut prendre à partir du pool. valeur est un pourcentage de la taille du pool de ressources définie par MAX_MEMORY_PERCENT. La valeur par défaut est 25.

Dans SQL Server 2017 (14.x) et les versions antérieures, valeur est un entier et la plage autorisée est comprise entre 1 et 100.

À compter de SQL Server 2019 (15.x), la valeur peut être fractionnaire à l’aide du type de données float. La plage autorisée est comprise entre 0 et 100.

Important

La quantité spécifiée fait uniquement référence à la mémoire de l’espace de travail de requête obtenue via des allocations de mémoire de requête.

Il n’est pas recommandé de définir valeur trop grande (par exemple, supérieure à 70), car le serveur peut ne pas avoir suffisamment de mémoire libre pour d’autres requêtes simultanées. Cela peut entraîner un délai d’expiration de l’allocation de mémoire erreur 8645.

La définition de valeur sur 0 ou une petite valeur peut empêcher les requêtes avec des opérateurs nécessitant une mémoire d’espace de travail, comme sort et hash, de s’exécuter dans des groupes de charges de travail définis par l’utilisateur. Si les exigences en mémoire de requête dépassent la limite définie par ce paramètre, le comportement suivant se produit :

  • Pour les groupes de charges de travail définis par l’utilisateur, le serveur tente de réduire le degré de parallélisme (DOP) de la requête (requête) jusqu’à ce que l’exigence de mémoire soit inférieure à la limite ou jusqu’à ce que DOP soit égal à 1. Si l’exigence de mémoire de requête est encore supérieure à la limite, l’erreur 8657 se produit et la requête échoue.
  • Pour les groupes de charges de travail internal et default, le serveur permet à la requête d’obtenir la mémoire requise.

Dans les deux cas, erreur 8645 peut se produire si le serveur a une mémoire physique insuffisante.

REQUEST_MAX_CPU_TIME_SEC = valeur

Spécifie la durée maximale du processeur, en secondes, qu’une demande peut utiliser. valeur doit être 0 ou un entier positif. Le paramètre par défaut pour valeur est 0, ce qui signifie illimité.

Par défaut, resource governor n’empêche pas la poursuite d’une requête si la durée maximale est dépassée. Toutefois, un événement est généré. Pour plus d’informations, consultez classe d’événements dépassé le seuil du processeur.

À compter de SQL Server 2016 (13.x) SP2 et SQL Server 2017 (14.x) CU3, et à l’aide de indicateur de trace 2422, resource governor abandonne une requête lorsque la durée maximale du processeur est dépassée.

REQUEST_MEMORY_GRANT_TIMEOUT_SEC = valeur

Spécifie la durée maximale, en secondes, qu’une requête peut attendre qu’une allocation de mémoire de la mémoire de l’espace de travail de requête soit disponible. valeur doit être 0 ou un entier positif. Le paramètre par défaut pour valeur, 0, utilise un calcul interne basé sur le coût de la requête pour déterminer la durée maximale.

Une requête ne échoue pas toujours lorsqu’un délai d’expiration d’allocation de mémoire est atteint. Une requête échoue uniquement s’il existe trop de requêtes simultanées en cours d’exécution. Sinon, la requête peut uniquement obtenir l’allocation de mémoire minimale, ce qui réduit les performances des requêtes.

MAX_DOP = valeur

Spécifie le degré maximal de parallélisme (MAXDOP) pour l’exécution de requête parallèle. La plage autorisée pour valeur est comprise entre 0 et 64. Le paramètre par défaut pour valeur, 0, utilise le paramètre global.

Pour plus d’informations, consultez MAXDOP .

GROUP_MAX_REQUESTS = valeur

Spécifie le nombre maximal de requêtes simultanées autorisées à s’exécuter dans le groupe de charge de travail. valeur doit être 0 ou un entier positif. Le paramètre par défaut pour valeur est 0 et autorise des requêtes illimitées. Lorsque les requêtes simultanées maximales sont atteintes, une session de ce groupe peut être créée, mais elle est placée dans un état d’attente jusqu’à ce que le nombre de requêtes simultanées tombe sous 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 identifié par pool_nameou au pool de ressources default. Si pool_name n’est pas fourni ou si l’argument USING n’est pas spécifié, le groupe de charge de travail est associé au pool de default intégré.

default est un mot réservé et, lorsqu’il est spécifié dans USING, doit être placé entre crochets ([]) ou guillemets ("").

Les pools de ressources intégrés et les groupes de charge de travail utilisent tous les noms minuscules, tels que default. Utilisez les default minuscules sur les serveurs qui utilisent un classement respectant la casse. Les serveurs dont le classement ne respecte pas la casse traitent default, Defaultet DEFAULT comme la même valeur.

Remarques

ALTER WORKLOAD GROUP est autorisé sur le groupe de charge de travail default, mais pas sur le groupe internal.

Les modifications apportées à la configuration du groupe de charge de travail ne prennent effet qu’après l’exécution de ALTER RESOURCE GOVERNOR RECONFIGURE.

Pour plus d’informations, consultez groupe de charge de travail Resource Governor et groupe de charge de travail Resource Governor.

MAXDOP

Pour une requête donnée, la MAXDOP effective est déterminée comme suit :

  • MAXDOP comme indicateur de requête est respecté tant qu’il ne dépasse pas le paramètre de MAX_DOP du groupe de charge de travail.
  • MAXDOP en tant qu’indicateur de requête remplace toujours la configuration du serveur max degree of parallelism. Pour plus d’informations, consultez Configuration du serveur : degré maximal de parallélisme.
  • Le groupe de charge de travail MAX_DOP remplace la configuration du serveur max degree of parallelism et la configuration étendue MAXDOPbase de données.

La limite MAXDOP est définie par tâche . Il ne s’agit pas d’une requête par ou par limite de requête. Pendant l’exécution d’une requête parallèle, une requête unique peut générer plusieurs tâches affectées à un planificateur de . Pour plus d’informations, consultez le guide d’architecture thread et de tâche.

Lorsqu’une requête est marquée comme série au moment de la compilation (MAXDOP = 1), elle ne peut pas s’exécuter avec parallélisme au moment de l’exécution, quel que soit le paramètre de configuration du groupe de charge de travail ou du serveur. Une fois MAXDOP déterminée pour une requête, elle ne peut être réduite qu’en raison de la pression de la mémoire. La reconfiguration du groupe de charge de travail n’affecte pas les requêtes en attente dans la file d’attente d’allocation de mémoire.

Plans mis en cache

Lorsque vous modifiez un plan affectant un paramètre tel que MAX_DOP, le nouveau paramètre prend effet dans les plans précédemment mis en cache uniquement après l’exécution de DBCC FREEPROCCACHE (<pool_name>), où <pool_name> est le nom d’un pool de ressources Resource Governor utilisé par le groupe de charge de travail actuel.

  • Si vous modifiez MAX_DOP à 1, l’exécution de DBCC FREEPROCCACHE n’est pas nécessaire, car les plans parallèles peuvent s’exécuter en mode série. Toutefois, un tel plan peut être moins efficace qu’un plan compilé en tant que plan série.
  • Si vous modifiez MAX_DOP de 1 à 0 ou une valeur supérieure à 1, l’exécution de DBCC FREEPROCCACHE n’est pas nécessaire. Toutefois, les plans série ne peuvent pas s’exécuter en parallèle. Par conséquent, l’effacement du cache respectif permet à de nouveaux plans d’être compilés à l’aide du parallélisme.

Avertissement

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 à l’aide du pool de ressources défini par l’utilisateur identifié par <pool_name>.

Création d’index

Pour des raisons de performances, la création d’index est autorisée à utiliser plus d’espace de travail de mémoire que initialement accordé. Resource Governor prend en charge cette gestion spéciale. Toutefois, l’octroi initial et les allocations de mémoire supplémentaires sont limitées par les paramètres du groupe de charge de travail et du pool de ressources.

La mémoire consommée pour créer un index non aligné sur une table partitionnée est proportionnelle au nombre de partitions impliquées. Si la mémoire totale requise dépasse la limite par requête appliquée par le paramètre de groupe de charge de travail REQUEST_MAX_MEMORY_GRANT_PERCENT, la création d’index peut échouer. Étant donné que le groupe de charge de travail default permet à une requête de dépasser la limite par requête avec la mémoire minimale requise pour démarrer pour la compatibilité descendante, vous pouvez peut-être créer le même index à l’aide du groupe de charge de travail default si le pool de ressources default a suffisamment de mémoire totale.

Autorisations

Nécessite l’autorisation CONTROL SERVER.

Exemples

L’exemple suivant montre comment modifier l’importance des requêtes dans le groupe par défaut de MEDIUM à LOW.

ALTER WORKLOAD GROUP [default]
WITH (IMPORTANCE = LOW);

ALTER RESOURCE GOVERNOR RECONFIGURE;

L’exemple suivant montre comment déplacer un groupe de charges de travail à partir du pool qu’il est actuellement dans le pool default.

ALTER WORKLOAD GROUP adHoc
USING [default];

ALTER RESOURCE GOVERNOR RECONFIGURE;

SQL Server

* SQL Managed Instance *  

Azure Synapse
d’analytique

 

SQL Server et SQL Managed Instance

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

Note

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

conventions de 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 | [par défaut]

Nom d’un groupe de charge de travail défini par l’utilisateur existant ou du groupe de charge de travail intégré default resource governor.

default doit être entre crochets ([]) ou guillemets ("") lorsqu’ils sont utilisés avec ALTER WORKLOAD GROUP pour éviter un conflit avec DEFAULT, qui est un mot réservé système. Pour plus d’informations, consultez identificateurs de base de données.

Les pools de ressources intégrés et les groupes de charge de travail utilisent tous les noms minuscules, tels que default. Utilisez les default minuscules sur les serveurs qui utilisent un classement respectant la casse. Les serveurs dont le classement ne respecte pas la casse traitent default, Defaultet DEFAULT comme la même valeur.

IMPORTANCE = { LOW | MEDIUM | HIGH }

Spécifie l’importance relative d’une requête dans le groupe de charge de travail. La valeur par défaut est MEDIUM.

IMPORTANCE est local dans le pool de ressources qui contient le groupe de charge de travail. Les groupes de charges de travail d’une importance différente à l’intérieur du même pool de ressources affectent les uns les autres, mais n’affectent pas les groupes de charges de travail dans d’autres pools de ressources.

REQUEST_MAX_MEMORY_GRANT_PERCENT = valeur

Spécifie la quantité maximale de mémoire de l’espace de travail de requête qu’une seule requête peut prendre à partir du pool. valeur est un pourcentage de la taille du pool de ressources définie par MAX_MEMORY_PERCENT. La valeur par défaut est 25.

Dans SQL Server 2017 (14.x) et les versions antérieures, valeur est un entier et la plage autorisée est comprise entre 1 et 100.

À compter de SQL Server 2019 (15.x), la valeur peut être fractionnaire à l’aide du type de données float. La plage autorisée est comprise entre 0 et 100.

Important

La quantité spécifiée fait uniquement référence à la mémoire de l’espace de travail de requête obtenue via des allocations de mémoire de requête.

Il n’est pas recommandé de définir valeur trop grande (par exemple, supérieure à 70), car le serveur peut ne pas avoir suffisamment de mémoire libre pour d’autres requêtes simultanées. Cela peut entraîner un délai d’expiration de l’allocation de mémoire erreur 8645.

La définition de valeur sur 0 ou une petite valeur peut empêcher les requêtes avec des opérateurs nécessitant une mémoire d’espace de travail, comme sort et hash, de s’exécuter dans des groupes de charges de travail définis par l’utilisateur. Si les exigences en mémoire de requête dépassent la limite définie par ce paramètre, le comportement suivant se produit :

  • Pour les groupes de charges de travail définis par l’utilisateur, le serveur tente de réduire le degré de parallélisme (DOP) de la requête (requête) jusqu’à ce que l’exigence de mémoire soit inférieure à la limite ou jusqu’à ce que DOP soit égal à 1. Si l’exigence de mémoire de requête est encore supérieure à la limite, l’erreur 8657 se produit et la requête échoue.
  • Pour les groupes de charges de travail internal et default, le serveur permet à la requête d’obtenir la mémoire requise.

Dans les deux cas, erreur 8645 peut se produire si le serveur a une mémoire physique insuffisante.

REQUEST_MAX_CPU_TIME_SEC = valeur

Spécifie la durée maximale du processeur, en secondes, qu’une demande peut utiliser. valeur doit être 0 ou un entier positif. Le paramètre par défaut pour valeur est 0, ce qui signifie illimité.

Par défaut, resource governor n’empêche pas la poursuite d’une requête si la durée maximale est dépassée. Toutefois, un événement est généré. Pour plus d’informations, consultez classe d’événements dépassé le seuil du processeur.

À compter de SQL Server 2016 (13.x) SP2 et SQL Server 2017 (14.x) CU3, et à l’aide de indicateur de trace 2422, resource governor abandonne une requête lorsque la durée maximale du processeur est dépassée.

REQUEST_MEMORY_GRANT_TIMEOUT_SEC = valeur

Spécifie la durée maximale, en secondes, qu’une requête peut attendre qu’une allocation de mémoire de la mémoire de l’espace de travail de requête soit disponible. valeur doit être 0 ou un entier positif. Le paramètre par défaut pour valeur, 0, utilise un calcul interne basé sur le coût de la requête pour déterminer la durée maximale.

Une requête ne échoue pas toujours lorsqu’un délai d’expiration d’allocation de mémoire est atteint. Une requête échoue uniquement s’il existe trop de requêtes simultanées en cours d’exécution. Sinon, la requête peut uniquement obtenir l’allocation de mémoire minimale, ce qui réduit les performances des requêtes.

MAX_DOP = valeur

Spécifie le degré maximal de parallélisme (MAXDOP) pour l’exécution de requête parallèle. La plage autorisée pour valeur est comprise entre 0 et 64. Le paramètre par défaut pour valeur, 0, utilise le paramètre global.

Pour plus d’informations, consultez MAXDOP .

GROUP_MAX_REQUESTS = valeur

Spécifie le nombre maximal de requêtes simultanées autorisées à s’exécuter dans le groupe de charge de travail. valeur doit être 0 ou un entier positif. Le paramètre par défaut pour valeur est 0 et autorise des requêtes illimitées. Lorsque les requêtes simultanées maximales sont atteintes, une session de ce groupe peut être créée, mais elle est placée dans un état d’attente jusqu’à ce que le nombre de requêtes simultanées tombe sous 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 identifié par pool_nameou au pool de ressources default. Si pool_name n’est pas fourni ou si l’argument USING n’est pas spécifié, le groupe de charge de travail est associé au pool de default intégré.

default est un mot réservé et, lorsqu’il est spécifié dans USING, doit être placé entre crochets ([]) ou guillemets ("").

Les pools de ressources intégrés et les groupes de charge de travail utilisent tous les noms minuscules, tels que default. Utilisez les default minuscules sur les serveurs qui utilisent un classement respectant la casse. Les serveurs dont le classement ne respecte pas la casse traitent default, Defaultet DEFAULT comme la même valeur.

Remarques

ALTER WORKLOAD GROUP est autorisé sur le groupe de charge de travail default, mais pas sur le groupe internal.

Les modifications apportées à la configuration du groupe de charge de travail ne prennent effet qu’après l’exécution de ALTER RESOURCE GOVERNOR RECONFIGURE.

Pour plus d’informations, consultez groupe de charge de travail Resource Governor et groupe de charge de travail Resource Governor.

MAXDOP

Pour une requête donnée, la MAXDOP effective est déterminée comme suit :

  • MAXDOP comme indicateur de requête est respecté tant qu’il ne dépasse pas le paramètre de MAX_DOP du groupe de charge de travail.
  • MAXDOP en tant qu’indicateur de requête remplace toujours la configuration du serveur max degree of parallelism. Pour plus d’informations, consultez Configuration du serveur : degré maximal de parallélisme.
  • Le groupe de charge de travail MAX_DOP remplace la configuration du serveur max degree of parallelism et la configuration étendue MAXDOPbase de données.

La limite MAXDOP est définie par tâche . Il ne s’agit pas d’une requête par ou par limite de requête. Pendant l’exécution d’une requête parallèle, une requête unique peut générer plusieurs tâches affectées à un planificateur de . Pour plus d’informations, consultez le guide d’architecture thread et de tâche.

Lorsqu’une requête est marquée comme série au moment de la compilation (MAXDOP = 1), elle ne peut pas s’exécuter avec parallélisme au moment de l’exécution, quel que soit le paramètre de configuration du groupe de charge de travail ou du serveur. Une fois MAXDOP déterminée pour une requête, elle ne peut être réduite qu’en raison de la pression de la mémoire. La reconfiguration du groupe de charge de travail n’affecte pas les requêtes en attente dans la file d’attente d’allocation de mémoire.

Plans mis en cache

Lorsque vous modifiez un plan affectant un paramètre tel que MAX_DOP, le nouveau paramètre prend effet dans les plans précédemment mis en cache uniquement après l’exécution de DBCC FREEPROCCACHE (<pool_name>), où <pool_name> est le nom d’un pool de ressources Resource Governor utilisé par le groupe de charge de travail actuel.

  • Si vous modifiez MAX_DOP à 1, l’exécution de DBCC FREEPROCCACHE n’est pas nécessaire, car les plans parallèles peuvent s’exécuter en mode série. Toutefois, un tel plan peut être moins efficace qu’un plan compilé en tant que plan série.
  • Si vous modifiez MAX_DOP de 1 à 0 ou une valeur supérieure à 1, l’exécution de DBCC FREEPROCCACHE n’est pas nécessaire. Toutefois, les plans série ne peuvent pas s’exécuter en parallèle. Par conséquent, l’effacement du cache respectif permet à de nouveaux plans d’être compilés à l’aide du parallélisme.

Avertissement

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 à l’aide du pool de ressources défini par l’utilisateur identifié par <pool_name>.

Création d’index

Pour des raisons de performances, la création d’index est autorisée à utiliser plus d’espace de travail de mémoire que initialement accordé. Resource Governor prend en charge cette gestion spéciale. Toutefois, l’octroi initial et les allocations de mémoire supplémentaires sont limitées par les paramètres du groupe de charge de travail et du pool de ressources.

La mémoire consommée pour créer un index non aligné sur une table partitionnée est proportionnelle au nombre de partitions impliquées. Si la mémoire totale requise dépasse la limite par requête appliquée par le paramètre de groupe de charge de travail REQUEST_MAX_MEMORY_GRANT_PERCENT, la création d’index peut échouer. Étant donné que le groupe de charge de travail default permet à une requête de dépasser la limite par requête avec la mémoire minimale requise pour démarrer pour la compatibilité descendante, vous pouvez peut-être créer le même index à l’aide du groupe de charge de travail default si le pool de ressources default a suffisamment de mémoire totale.

Autorisations

Nécessite l’autorisation CONTROL SERVER.

Exemples

L’exemple suivant montre comment modifier l’importance des requêtes dans le groupe par défaut de MEDIUM à LOW.

ALTER WORKLOAD GROUP [default]
WITH (IMPORTANCE = LOW);

ALTER RESOURCE GOVERNOR RECONFIGURE;

L’exemple suivant montre comment déplacer un groupe de charges de travail à partir du pool qu’il est actuellement dans le pool default.

ALTER WORKLOAD GROUP adHoc
USING [default];

ALTER RESOURCE GOVERNOR RECONFIGURE;

SQL Server

SQL Managed Instance

* Azure Synapse
Analytique *
 

 

Azure Synapse Analytics

Modifie un groupe de charge de travail existant.

Consultez la section ALTER WORKLOAD GROUP comportement ci-dessous pour plus d’informations sur la façon dont ALTER WORKLOAD GROUP se comporte sur un système avec des requêtes en cours d’exécution et en file d’attente.

Les restrictions en place pour CREATE WORKLOAD GROUP s’appliquent également à ALTER WORKLOAD GROUP. Avant de modifier les paramètres, interrogez sys.workload_management_workload_groups pour vous assurer 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

valeur est une plage entière comprise entre 0 et 100. Lors de la modification de MIN_PERCENTAGE_RESOURCE, la somme de MIN_PERCENTAGE_RESOURCE dans tous les groupes de charges de travail ne peut pas dépasser 100. La modification de MIN_PERCENTAGE_RESOURCE nécessite que toutes les requêtes en cours d’exécution se terminent dans le groupe de charge de travail avant la fin de la commande. Pour plus d’informations, consultez la section comportement ALTER WORKLOAD GROUP dans cet article.

CAP_PERCENTAGE_RESOURCE = valeur

valeur est une plage entière comprise entre 1 et 100. La valeur de CAP_PERCENTAGE_RESOURCE doit être supérieure à MIN_PERCENTAGE_RESOURCE. La modification de CAP_PERCENTAGE_RESOURCE nécessite que toutes les requêtes en cours d’exécution se terminent dans le groupe de charge de travail avant la fin de la commande. Pour plus d’informations, consultez la section comportement ALTER WORKLOAD GROUP dans cet article.

REQUEST_MIN_RESOURCE_GRANT_PERCENT = valeur

valeur est une décimale avec une plage comprise 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

valeur est une valeur décimale 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, en secondes, qu’une requête peut s’exécuter avant son annulation. La valeur doit être 0 ou un entier positif. Le paramètre par défaut pour la valeur est 0, ce qui signifie illimité.

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 modifie 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 ALTER WORKLOAD GROUP

À tout moment, il existe trois types de requêtes dans le système :

  • Demandes qui n’ont pas encore été classifiées.
  • Demandes classifiées et en attente, pour les verrous d’objet ou les ressources système.
  • Demandes classifiées et en cours d’exécution.

En fonction des propriétés d’un groupe de charge de travail modifié, le moment où les paramètres prennent effet diffèrent.

Importance ou query_execution_timeout

Pour l’importance et query_execution_timeout propriétés, les demandes non classifié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 requête ALTER WORKLOAD GROUP s’exécute immédiatement, quel que soit l’exécution de requêtes 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, l’exécution des requêtes s’exécute avec l’ancienne configuration. Les demandes en attente et les demandes non classifiées récupèrent les nouvelles valeurs de configuration. La requête ALTER WORKLOAD GROUP s’exécute immédiatement, quel que soit l’exécution de requêtes dans le groupe de charge de travail.

MIN_PERCENTAGE_RESOURCE ou CAP_PERCENTAGE_RESOURCE

Pour MIN_PERCENTAGE_RESOURCE et CAP_PERCENTAGE_RESOURCE, l’exécution des requêtes s’exécute avec l’ancienne configuration. Les demandes en attente et les demandes non classifiées récupèrent les nouvelles valeurs de configuration.

La modification de MIN_PERCENTAGE_RESOURCE et de CAP_PERCENTAGE_RESOURCE nécessite un drainage des requêtes en cours d’exécution dans le groupe de charge de travail en cours de modification. Lorsque vous diminuez MIN_PERCENTAGE_RESOURCE, les ressources libérées sont retournées au pool de partages, ce qui permet aux demandes d’autres groupes de charge de travail d’utiliser. À l’inverse, l’augmentation du MIN_PERCENTAGE_RESOURCE attend que les demandes utilisant uniquement les ressources nécessaires du pool partagé se terminent. L’opération de ALTER WORKLOAD GROUP aura un accès prioritaire aux ressources partagées sur d’autres requêtes en attente d’exécution sur un pool partagé. Si la somme de MIN_PERCENTAGE_RESOURCE dépasse 100%, la demande de ALTER WORKLOAD GROUP échoue immédiatement.

Comportement de verrouillage

La modification d’un groupe de charge de travail nécessite un verrou global sur tous les groupes de charges de travail. Une demande de modification d’un groupe de charge de travail se trouve en file d’attente derrière laquelle les demandes de groupe de charge de travail sont déjà envoyées ou suppriment les demandes de groupe de charge de travail. Si un lot d’instructions alter est envoyé à la fois, ils sont traités dans l’ordre dans lequel ils sont envoyés.

Voir aussi