Partager via


ALTER RESOURCE POOL (Transact-SQL)

S’applique à :SQL ServerAzure SQL Managed Instance

Modifie une configuration existante resource governor pool de ressources pour une instance du moteur de base de données.

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

ALTER RESOURCE POOL { pool_name | [default] }
[WITH
    ( [ MIN_CPU_PERCENT = value ]
    [ [ , ] MAX_CPU_PERCENT = value ]
    [ [ , ] CAP_CPU_PERCENT = value ]
    [ [ , ] AFFINITY {
                        SCHEDULER = AUTO
                      | ( <scheduler_range_spec> )
                      | NUMANODE = ( <NUMA_node_range_spec> )
                      }]
    [ [ , ] MIN_MEMORY_PERCENT = value ]
    [ [ , ] MAX_MEMORY_PERCENT = value ]
    [ [ , ] MIN_IOPS_PER_VOLUME = value ]
    [ [ , ] MAX_IOPS_PER_VOLUME = value ]
)]
[;]

<scheduler_range_spec> ::=
{SCHED_ID | SCHED_ID TO SCHED_ID}[,...n]

<NUMA_node_range_spec> ::=
{NUMA_node_ID | NUMA_node_ID TO NUMA_node_ID}[,...n]

Arguments

{ pool_name | [default] }

Nom d’un pool de ressources défini par l’utilisateur ou du pool de ressources intégré default.

default doit être entre crochets ([]) ou guillemets ("") lorsqu’ils sont utilisés avec ALTER RESOURCE POOL 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.

MIN_CPU_PERCENT = valeur

Spécifie la bande passante de l'UC moyenne garantie pour toutes les demandes dans le pool de ressources en cas de contention de l'UC. value est un entier dont la valeur par défaut est 0. La plage autorisée pour value est comprise entre 0 et 100.

MAX_CPU_PERCENT = valeur

Spécifie la bande passante processeur moyenne maximale que toutes les requêtes du pool de ressources reçoivent lorsqu’il existe une contention du processeur. value est un entier dont la valeur par défaut est 100. La plage autorisée pour value est comprise entre 1 et 100.

CAP_CPU_PERCENT = valeur

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

Spécifie une limite matérielle sur la bande passante de l’UC que toutes les requêtes du pool de ressources reçoivent. Limite le niveau maximal de bande passante du processeur à être identique à la valeur spécifiée. value est un entier dont la valeur par défaut est 100. La plage autorisée pour value est comprise entre 1 et 100.

Notes

En raison de la nature statistique de la gouvernance du processeur, vous remarquerez peut-être des pics courts occasionnels dépassant la valeur spécifiée dans CAP_CPU_PERCENT.

AFFINITY {SCHEDULER = AUTO | ( <scheduler_range_spec> ) | NUMANODE = (<NUMA_node_range_spec>)}

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

Attache le pool de ressources aux planificateurs spécifiques. La valeur par défaut est AUTO.

La spécification <scheduler_range_spec> pour AFFINITY SCHEDULER affinités entre le pool de ressources et les planificateurs du moteur de base de données identifiés par les ID donnés. Ces ID correspondent aux valeurs de la colonne scheduler_id dans sys.dm_os_schedulers.

La spécification <NUMA_node_range_spec> pour AFFINITY NUMANODE affinités entre le pool de ressources et les planificateurs du moteur de base de données qui mappent aux processeurs logiques correspondant au nœud NUMA donné ou à une plage de nœuds. Vous pouvez utiliser la requête Transact-SQL suivante pour découvrir le mappage entre la configuration NUMA physique et les ID du planificateur du moteur de base de données.

SELECT osn.memory_node_id AS numa_node_id,
       sc.cpu_id,
       sc.scheduler_id
FROM sys.dm_os_nodes AS osn
INNER JOIN sys.dm_os_schedulers AS sc
ON osn.node_id = sc.parent_node_id
   AND
   sc.scheduler_id < 1048576;

MIN_MEMORY_PERCENT = valeur

Spécifie la quantité minimale de mémoire de l’espace de travail de requête réservée au pool de ressources qui ne peut pas être partagée avec d’autres pools de ressources. value est un entier dont la valeur par défaut est 0. La plage autorisée pour valeur est comprise entre 0 et 100.

MAX_MEMORY_PERCENT = valeur

Spécifie la quantité maximale de mémoire de l’espace de travail de requête que les requêtes dans ce pool de ressources peuvent utiliser. value est un entier dont la valeur par défaut est 100. La plage autorisée pour value est comprise entre 1 et 100.

MIN_IOPS_PER_VOLUME = valeur

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

Spécifie les opérations d'E/S minimales par seconde (IOPS) par volume disque à réserver au pool de ressources. La plage autorisée pour value est comprise entre 0 et 2^31-1 (2 147 483 647). Spécifiez 0 pour indiquer aucun minimum pour le pool. La valeur par défaut est 0.

MAX_IOPS_PER_VOLUME = valeur

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

Spécifie les opérations d'E/S maximales par seconde (IOPS) par volume disque à autoriser pour le pool de ressources. La plage autorisée pour value est comprise entre 0 et 2^31-1 (2 147 483 647). Spécifiez 0 pour supprimer une limite d’E/S par seconde pour le pool. La valeur par défaut est 0.

Si la MAX_IOPS_PER_VOLUME d’un pool est définie sur 0, le pool n’est pas régi par les E/S et peut prendre tous les E/S par seconde dans le système même si d’autres pools ont MIN_IOPS_PER_VOLUME défini. Dans ce cas, nous vous recommandons de définir la valeur MAX_IOPS_PER_VOLUME pour ce pool sur un nombre élevé (par exemple, la valeur maximale 2^31-1) pour que ce pool soit régi par les E/S et pour respecter les réservations d’E/S par seconde qui peuvent exister pour d’autres pools.

Notes

La somme de MIN_CPU_PERCENT ou de MIN_MEMORY_PERCENT pour tous les pools de ressources ne peut pas dépasser 100 %.

MIN_IOPS_PER_VOLUME et MAX_IOPS_PER_VOLUME spécifiez les E/S minimales et maximales par seconde. Les E/S peuvent être des lectures ou des écritures, et peuvent être de n’importe quelle taille. Par conséquent, avec les mêmes limites d’E/S par seconde, le débit minimal et maximal d’E/S peut varier en fonction de la combinaison de tailles d’E/S dans la charge de travail.

Les valeurs de MAX_CPU_PERCENT et de MAX_MEMORY_PERCENT doivent être supérieures ou égales aux valeurs de MIN_CPU_PERCENT et de MIN_MEMORY_PERCENT, respectivement.

CAP_CPU_PERCENT diffère de MAX_CPU_PERCENT dans les charges de travail associées au pool peut utiliser la capacité du processeur au-dessus de la valeur de MAX_CPU_PERCENT si elle est disponible, mais pas au-dessus de la valeur de CAP_CPU_PERCENT. Bien qu’il y ait des pics courts supérieurs à CAP_CPU_PERCENT, les charges de travail ne peuvent pas dépasser CAP_CPU_PERCENT pendant des périodes prolongées, même quand une capacité de processeur supplémentaire est disponible.

Le pourcentage total du processeur pour chaque composant affinité (planificateur ou nœud NUMA) ne peut pas dépasser 100 %.

Pour plus d’informations, consultez Resource Governor et pool de ressources Resource Governor.

Plans mis en cache

Lorsque vous modifiez un plan affectant le paramètre, 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.

  • Si vous modifiez AFFINITY de plusieurs planificateurs en un seul planificateur, 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 AFFINITY d’un planificateur unique en plusieurs planificateurs, 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>.

Autorisations

Nécessite l’autorisation CONTROL SERVER.

Exemples

L’exemple suivant conserve tous les paramètres de pool de ressources actuels pour le pool default, à l’exception de MAX_CPU_PERCENT, qui est remplacé par 25 %.

ALTER RESOURCE POOL [default] WITH (MAX_CPU_PERCENT = 25);

ALTER RESOURCE GOVERNOR RECONFIGURE;

L’exemple suivant modifie le pool de ressources adhocPool comme suit :

  • Réserve 10 % du processeur et 5 % de la mémoire de l’espace de travail de requête à l’aide de MIN_CPU_PERCENT et de MIN_MEMORY_PERCENT respectivement.
  • Définit une limite de mémoire d’espace de travail de requête de 15 % à l’aide de MAX_MEMORY_PERCENT.
  • Définit une limite de processeur souple de 20 pour cent une limite de 30 pour cent du processeur dur à l’aide de MAX_CPU_PERCENT et de CAP_CPU_PERCENT respectivement.
  • Affinitise le pool à deux plages de processeurs logiques (0 à 63 et 128 à 191) à l’aide de AFFINITY SCHEDULER.

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

ALTER RESOURCE POOL adhocPool
WITH (
     MIN_CPU_PERCENT = 10,
     MAX_CPU_PERCENT = 20,
     CAP_CPU_PERCENT = 30,
     MIN_MEMORY_PERCENT = 5,
     MAX_MEMORY_PERCENT = 15,
     AFFINITY SCHEDULER = (0 TO 63, 128 TO 191)
     );

ALTER RESOURCE GOVERNOR RECONFIGURE;