Condividi tramite


ALTER RESOURCE POOL (Transact-SQL)

Si applica a:SQL ServerIstanza gestita di SQL di Azure

Modifica una configurazione esistente resource governor pool di risorse per un'istanza del motore di database.

Nota

Per Istanza gestita di SQL di Azure, è necessario essere nel contesto del database master per modificare la configurazione di Resource Governor.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

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]

Argomenti

{ pool_name | [impostazione predefinita] }

Nome di un pool di risorse definito dall'utente esistente o del pool di risorse default predefinito.

default deve essere racchiuso tra parentesi quadre ([]) o virgolette ("") quando viene usato con ALTER RESOURCE POOL per evitare conflitti con DEFAULT, ovvero una parola riservata di sistema. Per altre informazioni, vedere identificatori di database .

I pool di risorse predefiniti e i gruppi di carico di lavoro usano tutti i nomi minuscoli, ad esempio default. Usare il default minuscolo nei server che usano regole di confronto con distinzione tra maiuscole e minuscole. I server con regole di confronto senza distinzione tra maiuscole e minuscole considerano default, Defaulte DEFAULT come lo stesso valore.

MIN_CPU_PERCENT = valore

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 = valore

Specifica la larghezza di banda media massima della CPU ricevuta da tutte le richieste nel pool di risorse quando è presente una contesa della CPU. value è un intero con impostazione predefinita 100. L'intervallo consentito per value è compreso tra 1 e 100.

CAP_CPU_PERCENT = valore

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

Specifica un limite rigido per la larghezza di banda della CPU che tutte le richieste nel pool di risorse ricevono. Limita il livello massimo di larghezza di banda della CPU allo stesso modo del valore specificato. value è un intero con impostazione predefinita 100. L'intervallo consentito per value è compreso tra 1 e 100.

Nota

A causa della natura statistica della governance della CPU, è possibile notare picchi brevi occasionali che superano il valore specificato in CAP_CPU_PERCENT.

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.

Specificando <scheduler_range_spec> per AFFINITY SCHEDULER affinità il pool di risorse viene eseguito con le utilità di pianificazione del motore di database identificate dagli ID specificati. Questi ID vengono mappati ai valori nella colonna scheduler_id in sys.dm_os_schedulers.

Specificando <NUMA_node_range_spec> per AFFINITY NUMANODE affinità il pool di risorse con le utilità di pianificazione del motore di database che eseguono il mapping alle CPU logiche che corrispondono al nodo NUMA specificato o a un intervallo di nodi. È possibile usare la query di Transact-SQL seguente per individuare il mapping tra la configurazione NUMA fisica e gli ID dell'utilità di pianificazione del motore di database.

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 = valore

Specifica la quantità minima di memoria dell'area di lavoro query riservata per il pool di risorse che non può essere condivisa con altri pool di risorse. value è un intero con impostazione predefinita 0. L'intervallo consentito per valore è compreso tra 0 e 100.

MAX_MEMORY_PERCENT = valore

Specifica la quantità massima di memoria dell'area di lavoro query che può essere usata 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 = valore

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 un valore minimo per il pool. Il valore predefinito è 0.

MAX_IOPS_PER_VOLUME = valore

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 rimuovere un limite di operazioni di I/O al secondo per il pool. Il valore predefinito è 0.

Se il MAX_IOPS_PER_VOLUME per un pool è impostato su 0, il pool non è affatto regolato da I/O e può accettare tutte le operazioni di I/O al secondo nel sistema anche se altri pool hanno MIN_IOPS_PER_VOLUME impostato. Per 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) per impostare questo pool di operazioni di I/O regolate e per rispettare le prenotazioni di I/O al secondo che potrebbero esistere per altri pool.

Osservazioni:

La somma di MIN_CPU_PERCENT o MIN_MEMORY_PERCENT per tutti i pool di risorse non può superare il 100%.

MIN_IOPS_PER_VOLUME e MAX_IOPS_PER_VOLUME specificare gli I/O minimi e massimi al secondo. Le operazioni di I/O possono essere letture o scritture e possono essere di qualsiasi dimensione. Pertanto, con gli stessi limiti di I/O al secondo, la velocità effettiva minima e massima di I/O può variare a seconda della combinazione di dimensioni di I/O nel carico di lavoro.

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

CAP_CPU_PERCENT differisce da MAX_CPU_PERCENT in quanto i carichi di lavoro associati al pool possono usare la capacità della CPU al di sopra del valore di MAX_CPU_PERCENT, se disponibile, ma non al di sopra del valore di CAP_CPU_PERCENT. Anche se potrebbero verificarsi picchi brevi superiori a CAP_CPU_PERCENT, i carichi di lavoro non possono superare CAP_CPU_PERCENT per lunghi periodi di tempo, anche quando è disponibile capacità cpu aggiuntiva.

La percentuale di CPU totale per ogni componente affinizzato (utilità di pianificazione o nodi NUMA) non può superare il 100%.

Per altre informazioni, vedere Resource Governor e pool di risorse di Resource Governor.

Piani memorizzati nella cache

Quando si modifica un'impostazione che influisce sul piano, la nuova impostazione diventa effettiva nei piani memorizzati nella cache in precedenza solo dopo l'esecuzione di DBCC FREEPROCCACHE (<pool_name>), dove <pool_name> è il nome di un pool di risorse di Resource Governor.

  • Se si modifica AFFINITY da più utilità di pianificazione a un'unica utilità di pianificazione, l'esecuzione di DBCC FREEPROCCACHE non è necessaria perché i piani paralleli possono essere eseguiti in modalità seriale. Tuttavia, un piano di questo tipo potrebbe essere meno efficiente di un piano compilato come piano seriale.
  • Se si modifica AFFINITY da un'unica utilità di pianificazione a più utilità di pianificazione, l'esecuzione di DBCC FREEPROCCACHE non è necessaria. Tuttavia, i piani seriali non possono essere eseguiti in parallelo, quindi la cancellazione della rispettiva cache consente la compilazione di nuovi piani usando il parallelismo.

Avvertimento

La cancellazione dei piani memorizzati nella cache da un pool di risorse associato a più gruppi di carico di lavoro influisce su tutti i gruppi di carico di lavoro usando il pool di risorse definito dall'utente identificato da <pool_name>.

Autorizzazioni

Richiede l'autorizzazione CONTROL SERVER.

Esempi

L'esempio seguente mantiene tutte le impostazioni correnti del pool di risorse per il pool di default, ad eccezione di MAX_CPU_PERCENT, che viene modificato al 25%.

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

ALTER RESOURCE GOVERNOR RECONFIGURE;

L'esempio seguente modifica il pool di risorse adhocPool nel modo seguente:

  • Riserva il 10% della CPU e il 5% della memoria dell'area di lavoro query usando rispettivamente MIN_CPU_PERCENT e MIN_MEMORY_PERCENT.
  • Imposta un limite di memoria dell'area di lavoro query del 15% usando MAX_MEMORY_PERCENT.
  • Imposta un limite di CPU flessibile del 20% rispettivamente usando MAX_CPU_PERCENT e CAP_CPU_PERCENT.
  • Affinizza il pool a due intervalli di CPU logiche (da 0 a 63 e da 128 a 191) usando AFFINITY SCHEDULER.

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

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;