CREATE WORKLOAD GROUP (Transact-SQL)
Crée un groupe de charge de travail du gouverneur de ressources et l'associe à un pool de ressources du gouverneur de ressources. Le gouverneur de ressources est disponible uniquement dans les éditions Enterprise, Developer et Evaluation de SQL Server.
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" } ]
[ ; ]
Arguments
group_name
Nom défini par l'utilisateur du 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 des identificateurs.IMPORTANCE = { LOW | MEDIUM | HIGH }
Spécifie l'importance relative d'une demande dans le groupe de charge de travail. Le paramètre Importance peut avoir les valeurs suivantes, MEDIUM étant la valeur par défaut :LOW
MEDIUM
HIGH
Notes
En interne, chaque paramètre d'importance est stocké sous la forme d'un nombre utilisé pour les calculs.
Le paramètre IMPORTANCE est local par rapport au pool de ressources : les groupes de charge de travail d'importance différente à l'intérieur du même pool de ressources s'affectent mutuellement, mais n'affectent pas les groupes de charge de travail dans un autre pool de ressources.
REQUEST_MAX_MEMORY_GRANT_PERCENT = value
Spécifie la quantité de mémoire maximale qu'une requête unique peut prendre du pool. Ce pourcentage est relatif à la taille du pool de ressources spécifiée par MAX_MEMORY_PERCENT.Notes
La quantité spécifiée fait uniquement référence à la mémoire allouée à l'exécution de la requête.
value doit être égal à 0 ou un entier positif. La plage autorisée pour value est comprise entre 0 et 100. Le paramètre par défaut pour value est 25.
Notez les points suivants :
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 charge 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.
Notes
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 charge 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 charge 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.
Pour plus d'informations sur les messages d'erreur du gouverneur de ressources, consultez Résolution des problèmes du gouverneur de ressources.
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. Le paramètre par défaut de value est 0, ce qui signifie illimité.Notes
Le gouverneur de ressources 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.
REQUEST_MEMORY_GRANT_TIMEOUT_SEC = value
Spécifie la durée maximale, en secondes, pendant laquelle une requête peut attendre que l'allocation de mémoire (mémoire tampon de travail) devienne disponible.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.
value doit être égal à 0 ou un entier positif. Le paramètre par défaut 0 pour value utilise un calcul interne basé sur le coût de requête pour déterminer le délai maximal.
MAX_DOP = value
Spécifie le degré maximal de parallélisme (DOP) pour les requêtes 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 effectif 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 le degré maximal de parallélisme sp_configure dans SQL Server 2005.
Le groupe de charges de travail MAX_DOP remplace le degré maximal de parallélisme sp_configure.
Si la 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 sp_configure.
Une fois le degré maximal de parallélisme (DOP) configuré, il ne peut être diminué que sous la sollicitation de la mémoire. La reconfiguration du groupe de charge de travail n'est pas visible lors de l'attente dans la file d'attente d'allocation de mémoire.
GROUP_MAX_REQUESTS = value
Spécifie le nombre maximal de demandes simultanées autorisées à s'exécuter dans le groupe de charge de travail. value doit être égal à 0 ou un entier positif. Le paramètre par défaut 0 pour value autorise des requêtes illimitées.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 charge de travail dans le pool de ressources. Si pool_name n'est pas fourni, ou si l'argument USING n'est pas utilisé, le groupe de charge de travail est placé dans le pool par défaut du gouverneur de ressources 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. Pour plus d'informations, consultez Identificateurs délimités (Moteur de base de données).
Notes
Les groupes de charge 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 qui ne respecte pas la casse, tel que SQL_Latin1_General_CP1_CI_AS, traitent "default" et "Default" comme identiques.
Notes
REQUEST_MEMORY_GRANT_PERCENT : dans SQL Server 2005, 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 le gouverneur de ressources dans SQL Server 2008. Toutefois, l'allocation initiale et toute allocation de mémoire supplémentaire sont limitées par les paramètres du pool de ressources et du groupe de charge de travail.
Création d'un index sur une table partitionnée
La mémoire consommée par la création d'index sur une table partitionnée non-alignée est proportionnelle au nombre de partitions impliquées. Si la mémoire totale requise dépasse la limite par requête (REQUEST_MAX_MEMORY_GRANT_PERCENT) imposée par le paramètre du groupe de charge de travail du Gouverneur de ressources, cette création d'index peut ne pas s'exécuter. É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 la compatibilité SQL Server 2005, l'utilisateur peut être en mesure d'exécuter la même création d'index dans le groupe de charge de travail "default", si le pool de ressources "default" possède assez de mémoire totale configurée pour exécuter cette requête.
Autorisations
Nécessite l'autorisation CONTROL SERVER.
Exemples
L'exemple suivant montre comment créer un groupe de charge de travail appelé newReports. Ce pool utilise les paramètres par défaut du gouverneur de ressources et se trouve dans le pool par défaut du gouverneur de ressources. L'exemple spécifie le pool default, mais cela n'est pas obligatoire.
CREATE WORKLOAD GROUP newReports
USING "default" ;
GO