Partager via


CREATE 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

Crée un groupe de charges de travail du gouverneur de ressources et l'associe à un pool de ressources du gouverneur de ressources. Le gouverneur de ressources n’est pas disponible dans toutes les éditions de SQL Server. Pour obtenir la liste des fonctionnalités prises en charge par les éditions de SQL Server, consultez Éditions et fonctionnalités prises en charge de SQL Server 2022.

Conventions de la syntaxe Transact-SQL.

Syntaxe

CREATE WORKLOAD GROUP group_name
[ 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" ]
    [ [ , ] EXTERNAL external_pool_name | "default" ] ]
    } ]
[ ; ]

Arguments

group_name

Le nom défini par l’utilisateur pour le groupe de charge de travail. group_name est alphanumérique, peut contenir jusqu’à 128 caractères, doit être unique dans une instance de SQL Server et doit respecter les règles applicables aux identificateurs de base de données.

IMPORTANCE = { LOW | MEDIUM | HIGH }

Spécifie l'importance relative d'une demande dans le groupe de charges de travail. Le paramètre Importance peut avoir les valeurs suivantes, MEDIUM étant la valeur par défaut :

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

Notes

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

L’IMPORTANCE est locale dans le 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.

Jusqu’à SQL Server 2017 (14.x), value est un entier 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 float et la plage autorisée est comprise entre 0 et 100.

Important

La quantité spécifiée fait uniquement référence à la mémoire allouée à l'exécution de la requête.

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.

Sachez toutefois que dans les deux cas, l'erreur de délai d'attente 8645 se produit si le serveur dispose d'une mémoire physique 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é.

Notes

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.

Important

À 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 qu’une allocation de mémoire (mémoire tampon de travail) devienne disponible. value doit être égal à 0 ou 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.

Notes

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.

MAX_DOP = value

Spécifie le degré maximal de parallélisme (MAXDOP) pour l’exécution de demandes parallèles. value doit être égal à 0 ou un entier positif. La plage autorisée pour value est comprise entre 0 et 64. Le paramètre par défaut de value, 0, utilise le paramètre global.

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.

Notes

Le groupe de charge de travail MAX_DOP remplace la configuration du serveur pour un degré maximal de parallélisme et la configuration étendue à la MAXDOP base de données.

Conseil

Pour ce faire au niveau de la requête, utilisez l’indicateur de MAXDOP requête. Définir le degré maximal de parallélisme en tant qu'indicateur de requête est efficace tant qu'il ne dépasse pas le groupe de charges de travail MAX_DOP. Si la valeur d'indicateur de requête MAXDOP dépasse la valeur configurée avec Resource Governor, le Moteur de base de données SQL Server utilise la valeur MAX_DOP de Resource Governor. L’indicateur de requête MAXDOP remplace toujours la configuration du serveur pour le degré maximal de parallélisme.

Pour ce faire au niveau de la base de données, utilisez la configuration délimitée à la MAXDOP base de données.

Pour ce faire au niveau du serveur, utilisez l’option de configuration serveur du degré maximal de parallélisme (MAXDOP).

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 est 0, qui autorise un nombre illimité de demandes. Lorsque le nombre maximal de requêtes est atteint, un utilisateur de ce groupe peut se connecter, mais est placé dans un état d'attente jusqu'à ce que le nombre de requêtes 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 identifié par pool_name. Cette opération revient en fait à placer le groupe de charges 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.

"default" est un mot réservé et doit être placé entre des guillemets doubles ("") ou des crochets ([]) lorsqu’il est utilisé avec l’argument USING.

Notes

Les groupes de charges de travail et les pools de ressources prédéfinis utilisent tous des noms minuscules, 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.

EXTERNAL external_pool_name | "default"

S’applique à : SQL Server 2016 (13.x) et versions ultérieures.

Le groupe de charge de travail peut spécifier un pool de ressources externes. Vous pouvez définir un groupe de charge de travail et l’associer à deux pools :

  • Une liste de ressources partagées pour les charges de travail et les requêtes SQL Server
  • Un pool de ressources externes pour les processus externes. Pour plus d’informations, consultez sp_execute_external_script (Transact-SQL).

Notes

Quand REQUEST_MEMORY_GRANT_PERCENT est utilisé, la création d’index est autorisée à utiliser une mémoire d’espace de travail supérieure à celle qui lui a été initialement allouée, afin d’améliorer les performances. Cette gestion spéciale est prise en charge par Resource Governor dans SQL Server. 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 charges de travail.

La limite MAX_DOP est définie par tâche. Il ne s’agit pas d’une limite par demande ou par requête. Cela signifie que lors d’une exécution de requête parallèle, une requête unique peut générer plusieurs tâches qui sont affectées à un planificateur. Pour plus d’informations, consultez le Guide de l’architecture des threads et des tâches.

Lorsque MAX_DOP est utilisé et qu’une requête est marquée comme étant 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 de configuration du serveur. Après la configuration de MAX_DOP, il ne peut être diminué qu’en raison de la sollicitation de la 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.

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 charges de travail "default" permet à une requête de dépasser la limite par requête avec la mémoire minimale, l’utilisateur peut être en mesure d’exécuter la même création d’index dans le groupe de charges 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.

Exemple

Créez un groupe de charge de travail nommé newReports qui utilise les paramètres par défaut de Resource Governor et se trouve dans le pool par défaut de ce dernier. L’exemple spécifie le pool default, mais cela n’est pas obligatoire.

CREATE WORKLOAD GROUP newReports
WITH
    (REQUEST_MAX_MEMORY_GRANT_PERCENT = 2.5
      , REQUEST_MAX_CPU_TIME_SEC = 100
      , MAX_DOP = 4)
USING "default" ;
GO

Voir aussi

* SQL Managed Instance *  

 

SQL Server et SQL Managed Instance

Crée un groupe de charges de travail du gouverneur de ressources et l'associe à un pool de ressources du gouverneur de ressources. Le gouverneur de ressources n’est pas disponible dans toutes les éditions de SQL Server. Pour obtenir la liste des fonctionnalités prises en charge par les éditions de SQL Server, consultez Éditions et fonctionnalités prises en charge de SQL Server 2022.

Conventions de la syntaxe Transact-SQL.

Syntaxe

CREATE WORKLOAD GROUP group_name
[ 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" ]
    [ [ , ] EXTERNAL external_pool_name | "default" ] ]
    } ]
[ ; ]

Arguments

group_name

Le nom défini par l’utilisateur pour le groupe de charge de travail. group_name est alphanumérique, peut contenir jusqu’à 128 caractères, doit être unique dans une instance de SQL Server et doit respecter les règles applicables aux identificateurs de base de données.

IMPORTANCE = { LOW | MEDIUM | HIGH }

Spécifie l'importance relative d'une demande dans le groupe de charges de travail. Le paramètre Importance peut avoir les valeurs suivantes, MEDIUM étant la valeur par défaut :

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

Notes

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

L’IMPORTANCE est locale dans le 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.

Jusqu’à SQL Server 2017 (14.x), value est un entier 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 float et la plage autorisée est comprise entre 0 et 100.

Important

La quantité spécifiée fait uniquement référence à la mémoire allouée à l'exécution de la requête.

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.

Sachez toutefois que dans les deux cas, l'erreur de délai d'attente 8645 se produit si le serveur dispose d'une mémoire physique 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é.

Notes

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.

Important

À 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 qu’une allocation de mémoire (mémoire tampon de travail) devienne disponible. value doit être égal à 0 ou 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.

Notes

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.

MAX_DOP = value

Spécifie le degré maximal de parallélisme (MAXDOP) pour l’exécution de demandes parallèles. value doit être égal à 0 ou un entier positif. La plage autorisée pour value est comprise entre 0 et 64. Le paramètre par défaut de value, 0, utilise le paramètre global.

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.

Notes

Le groupe de charge de travail MAX_DOP remplace la configuration du serveur pour un degré maximal de parallélisme et la configuration étendue à la MAXDOP base de données.

Conseil

Pour ce faire au niveau de la requête, utilisez l’indicateur de MAXDOP requête. Définir le degré maximal de parallélisme en tant qu'indicateur de requête est efficace tant qu'il ne dépasse pas le groupe de charges de travail MAX_DOP. Si la valeur d'indicateur de requête MAXDOP dépasse la valeur configurée avec Resource Governor, le Moteur de base de données SQL Server utilise la valeur MAX_DOP de Resource Governor. L’indicateur de requête MAXDOP remplace toujours la configuration du serveur pour le degré maximal de parallélisme.

Pour ce faire au niveau de la base de données, utilisez la configuration délimitée à la MAXDOP base de données.

Pour ce faire au niveau du serveur, utilisez l’option de configuration serveur du degré maximal de parallélisme (MAXDOP).

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 est 0, qui autorise un nombre illimité de demandes. Lorsque le nombre maximal de requêtes est atteint, un utilisateur de ce groupe peut se connecter, mais est placé dans un état d'attente jusqu'à ce que le nombre de requêtes 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 identifié par pool_name. Cette opération revient en fait à placer le groupe de charges 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.

"default" est un mot réservé et doit être placé entre des guillemets doubles ("") ou des crochets ([]) lorsqu’il est utilisé avec l’argument USING.

Notes

Les groupes de charges de travail et les pools de ressources prédéfinis utilisent tous des noms minuscules, 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.

EXTERNAL external_pool_name | "default"

S’applique à : SQL Server 2016 (13.x) et versions ultérieures.

Le groupe de charge de travail peut spécifier un pool de ressources externes. Vous pouvez définir un groupe de charge de travail et l’associer à deux pools :

  • Une liste de ressources partagées pour les charges de travail et les requêtes SQL Server
  • Un pool de ressources externes pour les processus externes. Pour plus d’informations, consultez sp_execute_external_script (Transact-SQL).

Notes

Quand REQUEST_MEMORY_GRANT_PERCENT est utilisé, la création d’index est autorisée à utiliser une mémoire d’espace de travail supérieure à celle qui lui a été initialement allouée, afin d’améliorer les performances. Cette gestion spéciale est prise en charge par Resource Governor dans SQL Server. 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 charges de travail.

La limite MAX_DOP est définie par tâche. Il ne s’agit pas d’une limite par demande ou par requête. Cela signifie que lors d’une exécution de requête parallèle, une requête unique peut générer plusieurs tâches qui sont affectées à un planificateur. Pour plus d’informations, consultez le Guide de l’architecture des threads et des tâches.

Lorsque MAX_DOP est utilisé et qu’une requête est marquée comme étant 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 de configuration du serveur. Après la configuration de MAX_DOP, il ne peut être diminué qu’en raison de la sollicitation de la 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.

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 charges de travail "default" permet à une requête de dépasser la limite par requête avec la mémoire minimale, l’utilisateur peut être en mesure d’exécuter la même création d’index dans le groupe de charges 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.

Exemple

Créez un groupe de charge de travail nommé newReports qui utilise les paramètres par défaut de Resource Governor et se trouve dans le pool par défaut de ce dernier. L’exemple spécifie le pool default, mais cela n’est pas obligatoire.

CREATE WORKLOAD GROUP newReports
WITH
    (REQUEST_MAX_MEMORY_GRANT_PERCENT = 2.5
      , REQUEST_MAX_CPU_TIME_SEC = 100
      , MAX_DOP = 4)
USING "default" ;
GO

Voir aussi

* Azure Synapse
Analytics *
 

 

Azure Synapse Analytics

Crée un groupe de charge de travail. Les groupes de charge de travail sont les conteneurs d’un ensemble de requêtes. Ils déterminent la façon dont la gestion des charges de travail est configurée sur un système. Les groupes de charge de travail permettent de réserver des ressources pour l’isolation de la charge de travail. Ils contiennent des ressources, définissent les ressources par requête et adhèrent aux règles d’exécution. Une fois l’instruction exécutée, les paramètres sont activés.

Conventions de la syntaxe Transact-SQL

CREATE 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 ] )
  [ ; ]

group_name
Spécifie le nom qui identifie le groupe de charge de travail. group_name est un sysname. Il peut comporter jusqu’à 128 caractères et doit être unique dans l’instance.

MIN_PERCENTAGE_RESOURCE = valeur
spécifie une allocation de ressources minimale garantie qui n’est pas partagée avec d’autres groupes de charge de travail. La mémoire est la seule ressource régie par ce paramètre. La valeur est une plage d’entiers comprise entre 0 et 100. La somme des min_percentage_resource de tous les groupes de charge de travail ne peut pas dépasser 100. La valeur de min_percentage_resource ne peut pas être supérieure à cap_percentage_resource. Il existe des valeurs minimales effectives autorisées pour chaque niveau de service. Pour plus d’informations, consultez Valeurs effectives.

CAP_PERCENTAGE_RESOURCE = valeur
Spécifie l’utilisation maximale des ressources pour toutes les requêtes d’un groupe de charge de travail. Les ressources processeur et mémoire sont limitées par ce paramètre. La plage d’entiers autorisée pour la valeur est comprise entre 1 et 100. La valeur de cap_percentage_resource ne peut pas être supérieure à min_percentage_resource. La valeur effective de cap_percentage_resource peut être réduite si min_percentage_resource est supérieur à zéro dans d’autres groupes de charge de travail.

REQUEST_MIN_RESOURCE_GRANT_PERCENT = value
Spécifie l’utilisation minimale des ressources allouée par requête. La mémoire est la seule ressource régie par ce paramètre. La valeur est un paramètre obligatoire avec une plage décimale comprise entre 0,75 et 100,00. La valeur de request_min_resource_grant_percent doit être un multiple de 0,25, être un facteur de min_percentage_resource et être inférieur à cap_percentage_resource. Il existe des valeurs minimales effectives autorisées pour chaque niveau de service. Pour plus d’informations, consultez Valeurs effectives.

Par exemple :

CREATE WORKLOAD GROUP wgSample 
WITH
  ( MIN_PERCENTAGE_RESOURCE = 26                -- integer value
    , REQUEST_MIN_RESOURCE_GRANT_PERCENT = 3.25 -- factor of 26 (guaranteed a minimum of 8 concurrency)
    , CAP_PERCENTAGE_RESOURCE = 100 )

Aidez-vous des valeurs utilisées avec les classes de ressources pour request_min_resource_grant_percent. Le tableau ci-dessous contient les allocations des ressources pour Gen2.

Classe de ressource Pourcentage de ressources
Smallrc 3 %
Mediumrc 10 %
Largerc 22 %
Xlargerc 70 %

REQUEST_MAX_RESOURCE_GRANT_PERCENT = valeur

Définit le nombre maximal de ressources allouées par requête. La mémoire est la seule ressource régie par ce paramètre. La valeur est un paramètre décimal facultatif avec une valeur par défaut égale à celle de request_min_resource_grant_percent. La valeur doit être supérieure ou égale à request_min_resource_grant_percent. Lorsque la valeur de request_max_resource_grant_percent est supérieure à request_min_resource_grant_percent et que des ressources système sont disponibles, des ressources supplémentaires sont allouées à une requête.

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

Spécifie l’importance par défaut d’une requête pour le groupe de charge de travail. Le paramètre Importance peut avoir les valeurs suivantes, NORMAL étant la valeur par défaut :

  • LOW
  • BELOW_NORMAL
  • NORMAL (valeur par défaut)
  • ABOVE_NORMAL
  • HIGH

L’importance définie pour le groupe de charge de travail est l’importance par défaut de toutes les requêtes du groupe de charge de travail. Un utilisateur peut également définir l’importance au niveau du classifieur, ce qui peut remplacer le paramètre d’importance du groupe de charge de travail. Cela permet de différencier l’importance des requêtes au sein d’un groupe de charge de travail afin d’accéder plus rapidement aux ressources non réservées. Lorsque la somme des min_percentage_resource des différents groupes de charge de travail est inférieure à 100, des ressources non réservées sont affectées selon l’importance.

QUERY_EXECUTION_TIMEOUT_SEC = valeur

Spécifie la durée maximale (en secondes) pendant laquelle une requête peut s’exécuter avant d’être annulée. value doit être égal à 0 ou un entier positif. Le paramètre par défaut de la valeur est 0, ce qui signifie que la requête n’expire jamais. Le délai QUERY_EXECUTION_TIMEOUT_SEC démarre une fois que la requête est en cours d’exécution, pas quand elle est mise en file d’attente.

Notes

Les groupes de charge de travail correspondant aux classes de ressources sont créés automatiquement pour permettre une compatibilité descendante. Ces groupes de charge de travail définis par le système ne peuvent pas être supprimés. Il est possible de créer 8 autres groupes de charge de travail définis par l’utilisateur.

Si un groupe de charge de travail est créé avec une min_percentage_resource supérieure à zéro, l’instruction CREATE WORKLOAD GROUP est mise en file d’attente tant qu’il n’y a pas suffisamment de ressources pour créer le groupe de charge de travail.

Valeurs effectives

Les paramètres min_percentage_resource, cap_percentage_resource, request_min_resource_grant_percent et request_max_resource_grant_percent ont des valeurs effectives qui sont ajustées dans le contexte du niveau de service actuel et de la configuration d’autres groupes de charge de travail.

Le paramètre request_min_resource_grant_percent a une valeur effective, car les ressources minimales nécessaires par requête dépendent du niveau de service. Par exemple, au niveau de service le plus bas, DW100c, un minimum de 25 % des ressources par demande est nécessaire. Si le groupe de charge de travail est configuré avec 3 % pour request_min_resource_grant_percent et request_max_resource_grant_percent, les valeurs effectives pour les deux paramètres s’ajustent à 25 % lorsque l’instance est démarrée. Si l’instance est mise à l’échelle à DW1000c, les valeurs configurées et effectives pour les deux paramètres sont de 3 %, car 3 % est la valeur minimale prise en charge à ce niveau de service. Si la mise à l’échelle de l’instance est supérieure à Dw1000c, les valeurs configurées et effectives pour les deux paramètres resteront à 3 %. Consultez le tableau ci-dessous pour plus d’informations sur les valeurs effectives pour différents niveaux de service.

Niveau de service Valeur effective la plus faible pour REQUEST_MIN_RESOURCE_GRANT_PERCENT Nombre maximal de requêtes simultanées
DW100c 25 % 4
DW200c 12,5 % 8
DW300c 8 % 12
DW400c 6,25 % 16
DW500c 5 % 20
DW1000c 3 % 32
DW1500c 3 % 32
DW2000c 2 % 48
DW2500c 2 % 48
DW3000c 1,5 % 64
DW5000c 1,5 % 64
DW6000c 0,75 % 128
DW7500c 0,75 % 128
DW10000c 0,75 % 128
DW15000c 0,75 % 128
DW30000c 0,75 % 128

Le paramètre min_percentage_resource doit être supérieur ou égal au paramètre request_min_resource_grant_percenteffectif. Un groupe de charge de travail avec min_percentage_resource inférieur à la valeur effective de min_percentage_resource a sa valeur définie sur zéro au moment de l’exécution. Quand cela se produit, les ressources configurées pour min_percentage_resource peuvent être partagées entre tous les groupes de charge de travail. Par exemple, le groupe de charge de travail wgAdHoc avec un min_percentage_resource de 10 % exécuté avec DW1000c aura un min_percentage_resource effectif de 10 % (3 % est la valeur minimale prise en charge par DW1000c). wgAdhoc avec DW100c aura un min_percentage_resource effectif de 0 %. Les 10 % configurés pour wgAdhoc seront partagés entre tous les groupes de charge de travail.

Le paramètre cap_percentage_resource a également une valeur effective. Si un groupe de charge de travail wgAdhoc est configuré avec un cap_percentage_resource de 100 % et qu’un autre groupe de charge de travail wgDashboards est créé avec un min_percentage_resource de 25 %, le cap_percentage_resource effectif pour wgAdhoc devient 75 %.

Le moyen le plus simple de comprendre les valeurs d’exécution de vos groupes de charge de travail consiste à interroger la vue système sys.dm_workload_management_workload_groups_stats.

Autorisations

Nécessite l’autorisation CONTROL DATABASE

Voir aussi