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 charge de travail Resource Governor et associe le groupe de charge de travail à un pool de ressources Resource Governor.
Resource Governor n’est pas disponible dans chaque édition 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.
Notes
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 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 du moteur de base de données et doit respecter les règles relatives 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. 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 = value
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
etdefault
, 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 = 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 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 CPU Threshold Exceeded.
À 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 = value
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. 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.
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 = value
Spécifie le degré maximal de parallélisme (MAXDOP
) pour l’exécution de requête parallèle. 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.
Pour plus d’informations, consultez 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 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
, Default
et DEFAULT
comme la même valeur.
EXTERNAL_POOL_NAME EXTERNAL | [par défaut]
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 :
- Pool de ressources pour les charges de travail du moteur de base de données.
- Un pool de ressources externes pour les processus externes. Pour plus d’informations, consultez sp_execute_external_script.
Notes
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 deMAX_DOP
du groupe de charge de travail. -
MAXDOP
en tant qu’indicateur de requête remplace toujours la configuration du serveurmax 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 serveurmax degree of parallelism
et la configuration étendueMAXDOP
base de données.
La limite MAXDOP
est définie par tâche. Il ne s’agit pas d’une limite par demande ou par 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.
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
.
Exemple
Crée un groupe de charge de travail nommé newReports
dans le pool de ressources default
et limite l’allocation maximale de mémoire, la durée maximale du processeur pour une requête et MAXDOP
.
CREATE WORKLOAD GROUP newReports
WITH (
REQUEST_MAX_MEMORY_GRANT_PERCENT = 2.5,
REQUEST_MAX_CPU_TIME_SEC = 100,
MAX_DOP = 4
)
USING [default];
Contenu connexe
- didacticiel : Exemples de configuration Resource Governor et meilleures pratiques
- Resource Governor
- groupe de charge de travail Resource Governor
- Créer un groupe de charge de travail
- ALTER WORKLOAD GROUP
- DROP WORKLOAD GROUP
- CREATE RESOURCE POOL
- ALTER RESOURCE POOL
- DROP RESOURCE POOL
- ALTER RESOURCE GOVERNOR
* SQL Managed Instance *
SQL Server et SQL Managed Instance
Crée un groupe de charge de travail Resource Governor et associe le groupe de charge de travail à un pool de ressources Resource Governor.
Resource Governor n’est pas disponible dans chaque édition 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.
Notes
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 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 du moteur de base de données et doit respecter les règles relatives 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. 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 = value
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
etdefault
, 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 = 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 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 CPU Threshold Exceeded.
À 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 = value
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. 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.
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 = value
Spécifie le degré maximal de parallélisme (MAXDOP
) pour l’exécution de requête parallèle. 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.
Pour plus d’informations, consultez 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 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
, Default
et DEFAULT
comme la même valeur.
EXTERNAL_POOL_NAME EXTERNAL | [par défaut]
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 :
- Pool de ressources pour les charges de travail du moteur de base de données.
- Un pool de ressources externes pour les processus externes. Pour plus d’informations, consultez sp_execute_external_script.
Notes
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 deMAX_DOP
du groupe de charge de travail. -
MAXDOP
en tant qu’indicateur de requête remplace toujours la configuration du serveurmax 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 serveurmax degree of parallelism
et la configuration étendueMAXDOP
base de données.
La limite MAXDOP
est définie par tâche. Il ne s’agit pas d’une limite par demande ou par 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.
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
.
Exemple
Crée un groupe de charge de travail nommé newReports
dans le pool de ressources default
et limite l’allocation maximale de mémoire, la durée maximale du processeur pour une requête et MAXDOP
.
CREATE WORKLOAD GROUP newReports
WITH (
REQUEST_MAX_MEMORY_GRANT_PERCENT = 2.5,
REQUEST_MAX_CPU_TIME_SEC = 100,
MAX_DOP = 4
)
USING [default];
Contenu connexe
- didacticiel : Exemples de configuration Resource Governor et meilleures pratiques
- Resource Governor
- groupe de charge de travail Resource Governor
- Créer un groupe de charge de travail
- ALTER WORKLOAD GROUP
- DROP WORKLOAD GROUP
- CREATE RESOURCE POOL
- ALTER RESOURCE POOL
- DROP RESOURCE POOL
- ALTER RESOURCE GOVERNOR
* 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_percent
effectif. 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