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 n'est pas disponible dans toutes les éditions de Microsoft SQL Server. Pour obtenir une liste des fonctionnalités prises en charge par les éditions de SQL Server, consultez Fonctionnalités prises en charge par les éditions de SQL Server 2012.

Icône Lien de rubrique 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" } ]
[ ; ]

Arguments

  • group_name
    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 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

    [!REMARQUE]

    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.

    [!REMARQUE]

    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.

    [!REMARQUE]

    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.

  • 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é.

    [!REMARQUE]

    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.

    [!REMARQUE]

    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 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 effectif tant qu'il ne dépasse pas le groupe de charge de travail MAX_DOP. À partir de SQL Server 2008, si la valeur d'identificateur de requête MAXDOP dépasse la valeur configurée avec le gouverneur de ressources, le moteur de base de données utilise la valeur MAXDOP du gouverneur de ressources.

    • MAX_DOP comme indicateur de requête remplace toujours sp_configure 'max degree of parallelism'.

    • Le groupe de charges de travail MAX_DOP remplace le sp_configure 'max degree of parallelism'.

    • 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 l'allocation de 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 charges 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. 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 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.

    [!REMARQUE]

    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 : 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 2012. 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, 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

Voir aussi

Référence

ALTER WORKLOAD GROUP (Transact-SQL)

DROP WORKLOAD GROUP (Transact-SQL)

CREATE RESOURCE POOL (Transact-SQL)

ALTER RESOURCE POOL (Transact-SQL)

DROP RESOURCE POOL (Transact-SQL)

ALTER RESOURCE GOVERNOR (Transact-SQL)