CREATE RESOURCE POOL (Transact-SQL)

Si applica a: SQL Server Istanza gestita di SQL di Azure

Crea un pool di risorse di Resource Governor in SQL Server. Un pool di risorse rappresenta un subset delle risorse fisiche (memoria, CPU e IO) di un'istanza del motore di database. Resource Governor consente a un amministratore di database di distribuire le risorse del server tra pool di risorse, fino a un massimo di 64 pool. Resource Governor non è disponibile in tutte le edizioni di SQL Server. Per un elenco delle funzionalità supportate dalle edizioni di SQL Server, vedere Funzionalità supportate dalle edizioni di SQL Server 2016.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

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]  

Argomenti

pool_name
Nome definito dall'utente per il pool di risorse. pool_name è un valore alfanumerico, può essere composto da un massimo di 128 caratteri, deve essere univoco all'interno di un'istanza di SQL Server e deve essere conforme alle regole relative agli identificatori.

MIN_CPU_PERCENT =value
Specifica la larghezza di banda media garantita della CPU concessa per tutte le richieste nel pool di risorse, in caso di contesa di CPU. value è un intero con impostazione predefinita 0. L'intervallo consentito per value è compreso tra 0 e 100.

MAX_CPU_PERCENT =value
Specifica la larghezza di banda media massima della CPU concessa per tutte le richieste nel pool di risorse in caso di contesa di CPU. value è un intero con impostazione predefinita 100. L'intervallo consentito per value è compreso tra 1 e 100.

CAP_CPU_PERCENT =value
Si applica a: SQL Server 2012 (11.x) e versioni successive.

Specifica il limite di utilizzo massimo della larghezza di banda della CPU concesso per tutte le richieste nel pool di risorse. Limita il livello massimo della larghezza di banda della CPU al valore specificato. value è un intero con impostazione predefinita 100. L'intervallo consentito per value è compreso tra 1 e 100.

AFFINITY {SCHEDULER = AUTO | ( <scheduler_range_spec> ) | NUMANODE = (<NUMA_node_range_spec>)}
Si applica a: SQL Server 2012 (11.x) e versioni successive.

Associa il pool di risorse a utilità di pianificazione specifiche. Il valore predefinito è AUTO.

AFFINITY SCHEDULER = (<scheduler_range_spec>) esegue il mapping del pool di risorse alle pianificazioni di SQL Server identificate dagli ID specificati. Questi ID eseguono il mapping ai valori nella colonna scheduler_id di sys.dm_os_schedulers (Transact-SQL).

Se si usa AFFINITY NUMANODE = (<NUMA_node_range_spec>), viene creata un'affinità tra il pool di risorse e le utilità di pianificazione di SQL Server che eseguono il mapping alle CPU fisiche corrispondenti al nodo o all'intervallo di nodi NUMA specificato. È possibile usare la seguente query Transact-SQL per individuare il mapping tra la configurazione NUMA fisica e gli ID delle utilità di pianificazione di 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
Specifica la quantità minima di memoria riservata al pool di risorse non condivisibile con altri pool di risorse. value è di tipo Integer e il valore predefinito è 0. L'intervallo consentito per value è compreso tra 0 e 100.

MAX_MEMORY_PERCENT =value
Specifica la memoria totale del server utilizzabile dalle richieste in questo pool di risorse. value è un intero con impostazione predefinita 100. L'intervallo consentito per value è compreso tra 1 e 100.

MIN_IOPS_PER_VOLUME =value
Si applica a: SQL Server 2014 (12.x) e versioni successive.

Specifica il numero minimo di operazioni di I/O al secondo per volume di disco da riservare per il pool di risorse. L'intervallo consentito per value è compreso tra 0 e 2^31-1 (2,147,483,647). Specificare 0 per indicare che non è impostata alcuna soglia minima per il pool. Il valore predefinito è 0.

MAX_IOPS_PER_VOLUME =value
Si applica a: SQL Server 2014 (12.x) e versioni successive.

Specifica il numero massimo di operazioni di I/O al secondo per volume di disco da riservare per il pool di risorse. L'intervallo consentito per value è compreso tra 0 e 2^31-1 (2,147,483,647). Specificare 0 per impostare una soglia illimitata per il pool. Il valore predefinito è 0.

Se il valore MAX_IOPS_PER_VOLUME per un pool è impostato su 0, il pool non è governato e può accettare tutti gli IOPS nel sistema anche se in altri pool è impostato il valore MIN_IOPS_PER_VOLUME. In questo caso, è consigliabile impostare il valore MAX_IOPS_PER_VOLUME per questo pool su un numero elevato, ad esempio il valore massimo 2^31-1, se si vuole che questo pool sia governato per l'I/O.

Osservazioni:

MIN_IOPS_PER_VOLUME e MAX_IOPS_PER_VOLUME specificano il numero minimo e massimo di letture o scritture al secondo. Queste letture o scritture possono essere di qualsiasi dimensione e non indicano una velocità effettiva minima e massima.

I valori per MAX_CPU_PERCENT e MAX_MEMORY_PERCENT devono essere maggiori o uguali ai valori per MIN_CPU_PERCENT e MIN_MEMORY_PERCENT, rispettivamente.

CAP_CPU_PERCENT è diverso da MAX_CPU_PERCENT, in quanto i carichi di lavoro associati al pool possono usare la capacità della CPU oltre il valore di MAX_CPU_PERCENT se è disponibile, ma non oltre il valore di CAP_CPU_PERCENT.

La percentuale totale di CPU per ogni componente per il quale è impostata l'affinità (utilità di pianificazione o nodi NUMA) non deve superare il 100%.

Autorizzazioni

È richiesta l'autorizzazione CONTROL SERVER.

Esempi

1. Mostra come creare un pool di risorse

In questo esempio viene creato un pool di risorse denominato "bigPool". Il pool utilizza le impostazioni predefinite di Resource Governor.

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

2. Impostare il CAP_CPU_PERCENT su un limite rigido e impostare AFFINITY SCHEDULER

Impostare CAP_CPU_PERCENT su un limite rigido del 30% e impostare AFFINITY SCHEDULER su un intervallo da 0 a 63 e da 128 a 191.

Si applica a: SQL Server 2012 (11.x) e versioni successive.

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. Impostare MIN_IOPS_PER_VOLUME e MAX_IOPS_PER_VOLUME

Impostare MIN_IOPS_PER_VOLUME su 20 e MAX_IOPS_PER_VOLUME su 100. Questi valori determinano le operazioni di lettura e scrittura di I/O fisico disponibili per il pool di risorse.

Si applica a: SQL Server 2014 (12.x) e versioni successive.

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

Vedi anche

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 di risorse di Resource Governor
Creare un pool di risorse