CREATE RESOURCE POOL (Transact-SQL)

S’applique à : SQL Server Azure SQL Managed Instance

Crée un pool de ressources du gouverneur de ressources dans SQL Server. Un gouverneur de ressources représente un sous-ensemble des ressources physiques (mémoire, UC et E/S) d'une instance du moteur de base de données. Le Gouverneur de ressources permet à un administrateur de base de données de répartir des ressources serveur entre plusieurs pools de ressources (64 pools au maximum). 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 Fonctionnalités prise en charge par les éditions de SQL Server 2016.

Conventions de la syntaxe Transact-SQL

Syntaxe

CREATE RESOURCE POOL pool_name  
[ 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
Nom défini par l'utilisateur du pool de ressources. pool_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.

MIN_CPU_PERCENT =value
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 =value
Spécifie la bande passante de l’UC moyenne maximale que toutes les demandes du pool de ressources recevront en cas de contention de l’UC. 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 =value
S’applique à : SQL Server 2012 (11.x) et versions ultérieures.

Spécifie une limite maximale d'utilisation fixe sur la bande passante de l'UC que toutes les demandes dans le pool de ressources recevront. Limite le niveau de la bande passante maximum de l'UC pour qu'il soit 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.

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.

AFFINITY SCHEDULER = (<scheduler_range_spec>) mappe le pool de ressources aux planifications SQL Server identifiées par les ID donnés. Ces ID correspondent aux valeurs de la colonne scheduler_id dans sys.dm_os_schedulers (Transact-SQL).

Quand vous utilisez AFFINITY NUMANODE = (<NUMA_node_range_spec>), une affinité est créée pour le pool de ressources et les planificateurs SQL Server qui sont mappés aux processeurs physiques correspondant au nœud NUMA ou à la plage de nœuds donnés. Vous pouvez utiliser la requête Transact-SQL ci-après pour découvrir le mappage entre la configuration NUMA physique et les ID du planificateur SQL Server.

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 =value
Spécifie la quantité de mémoire minimale réservée à ce 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 value est comprise entre 0 et 100.

MAX_MEMORY_PERCENT =value
Spécifie la mémoire totale du serveur qui peut être utilisée par les demandes dans ce pool de ressources. 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 =value
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 l'absence de seuil minimal pour le pool. La valeur par défaut est 0.

MAX_IOPS_PER_VOLUME =value
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 définir un seuil illimité pour le pool. La valeur par défaut est 0.

Si la valeur MAX_IOPS_PER_VOLUME d’un pool est égale à 0, ce pool n’est pas régi du tout et peut prendre toutes les E/S par seconde du système, même si MIN_IOPS_PER_VOLUME est défini sur d’autres pools. Dans ce cas, nous recommandons de définir la valeur MAX_IOPS_PER_VOLUME de ce pool sur un nombre élevé (par exemple, la valeur maximale 2^31-1) pour qu’il soit régi en matière d’E/S.

Notes

MIN_IOPS_PER_VOLUME et MAX_IOPS_PER_VOLUME spécifient le nombre minimal et maximal de lectures et d’écritures par seconde. Ces lectures ou écritures peuvent être de toute taille et n'indiquent pas un débit minimal ou maximal.

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

CAP_CPU_PERCENT est différent de MAX_CPU_PERCENT, dans la mesure où les charges de travail associées au pool peuvent utiliser la capacité du processeur au-delà de la valeur MAX_CPU_PERCENT si elle est disponible, mais pas au-delà de la valeur CAP_CPU_PERCENT.

Le pourcentage de processeur total de chaque composant d’affinité (planificateur(s) ou nœud(s) NUMA) ne doit pas dépasser 100 %.

Autorisations

Nécessite l'autorisation CONTROL SERVER.

Exemples

1. Créer un pool de ressources

Cet exemple crée un pool de ressources nommé « bigPool ». Ce pool utilise les paramètres par défaut du gouverneur de ressources.

CREATE RESOURCE POOL bigPool;  
GO  
ALTER RESOURCE GOVERNOR RECONFIGURE;  
GO  

2. Définir CAP_CPU_PERCENT sur une limite inconditionnelle et définir AFFINITY SCHEDULER

Définissez CAP_CPU_PERCENT sur la limite inconditionnelle de 30 % et définissez AFFINITY SCHEDULER sur les plages 0-63 et 128-191.

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

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

3. Définir MIN_IOPS_PER_VOLUME et MAX_IOPS_PER_VOLUME

Définissez MIN_IOPS_PER_VOLUME sur 20 et MAX_IOPS_PER_VOLUME sur 100. Ces valeurs déterminent les opérations de lecture et d'écriture d'E/S physiques disponibles pour le pool de ressources.

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

CREATE RESOURCE POOL PoolAdmin  
WITH (  
    MIN_IOPS_PER_VOLUME = 20,  
    MAX_IOPS_PER_VOLUME = 100  
      );  

Voir aussi

ALTER RESOURCE POOL (Transact-SQL)
DROP RESOURCE POOL (Transact-SQL)
CREATE WORKLOAD GROUP (Transact-SQL)
ALTER WORKLOAD GROUP (Transact-SQL)
DROP WORKLOAD GROUP (Transact-SQL)
ALTER RESOURCE GOVERNOR (Transact-SQL)
Pool de ressources de Resource Governor
Créer un pool de ressources