ALTER WORKLOAD GROUP (Transact-SQL)

Modifica una configurazione esistente del gruppo di carico di lavoro di Resource Governor e facoltativamente la assegna a un pool di risorse di Resource Governor.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL.

Sintassi

ALTER WORKLOAD GROUP { group_name | "default" }
[ 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" } ]
[ ; ]

Argomenti

  • group_name | "default"
    Nome di un gruppo di carico di lavoro esistente definito dall'utente o del gruppo di carico di lavoro predefinito di Resource Governor.

    Nota

    Resource Governor crea i gruppi "predefiniti" e interni all'installazione di SQL Server.

    Se utilizzata con ALTER WORKLOAD GROUP, l'opzione "default" deve essere delimitata da virgolette ("") o parentesi quadrate ([]) per evitare conflitti con DEFAULT, una parola riservata di sistema. Per ulteriori informazioni, vedere Identificatori delimitati (Motore di database).

    Nota

    Per i gruppi del carico di lavoro e pool di risorse predefiniti vengono utilizzati sempre nomi scritti in lettere minuscole, ad esempio "default". Questo aspetto deve essere preso in considerazione per i server in cui vengono utilizzate regole di confronto con distinzione tra maiuscole e minuscole. Nei server con regole di confronto senza distinzione tra maiuscole e minuscole, ad esempio SQL_Latin1_General_CP1_CI_AS, le parole "default" e "Default" vengono considerate uguali.

  • IMPORTANCE = { LOW | MEDIUM | HIGH }
    Specifica l'importanza relativa di una richiesta nel gruppo del carico di lavoro. I possibili valori di importanza sono i seguenti:

    • LOW

    • MEDIUM (valore predefinito)

    • HIGH

    Nota

    Internamente, ogni impostazione di importanza viene archiviata come un numero utilizzato per i calcoli.

    IMPORTANCE è locale al pool di risorse. I gruppi di carico di lavoro con diversa importanza e interni allo stesso pool di risorse influiscono l'uno sull'altro, ma non sui gruppi di carico di lavoro in un altro pool di risorse.

  • REQUEST_MAX_MEMORY_GRANT_PERCENT = value
    Specifica la quantità massima di memoria che una singola richiesta può accettare dal pool. La percentuale è relativa alla dimensioni del pool di risorse specificata da MAX_MEMORY_PERCENT.

    Nota

    La quantità specificata si riferisce solo alla memoria di concessione per l'esecuzione della query.

    value deve essere 0 o un numero intero positivo. L'intervallo consentito per value è compreso tra 0 e 100. L'impostazione predefinita di value è 25.

    Tenere presente quanto segue:

    • Impostando value su 0 si impedisce l'esecuzione delle query con operazioni SORT e HASH JOIN nei gruppi di carico di lavoro definiti dall'utente.

    • Non è consigliabile impostare value su un valore maggiore di 70 perché il server potrebbe non essere in grado di riservare una quantità sufficiente di memoria libera se sono in esecuzione altre query simultaneamente. È possibile che venga restituito l'errore di timeout query 8645.

    Nota

    Se i requisiti di memoria della query superano il limite specificato da questo parametro, il server effettua le operazioni seguenti:

    Per i gruppi di carico di lavoro definiti dall'utente, il server tenta di ridurre il grado di parallelismo delle query fino a quando i requisiti di memoria non rientrano nel limite o fino a quando il grado di parallelismo non è uguale a 1. Se i requisiti di memoria delle query sono ancora superiori al limite, si verifica l'errore 8657.

    Per i gruppi di carico di lavoro interni e predefiniti, il server permette alla query di ottenere la memoria necessaria.

    In entrambi i casi, è possibile che si verifichi l'errore di timeout 8645 se il server non dispone di memoria fisica sufficiente.

    Per ulteriori informazioni sui messaggi di errore di Resource Governor, vedere Risoluzione dei problemi relativi a Resource Governor.

  • REQUEST_MAX_CPU_TIME_SEC = value
    Specifica il tempo massimo di attesa di una query, in secondi, per la disponibilità di una risorsa, prima che la query generi un errore. value deve essere zero o un numero intero positivo. L'impostazione predefinita per value è 0, per determinare il tempo massimo, si ricorre a un calcolo interno basato sul costo della query.

    Nota

    Resource Governor non impedirà la continuazione di una richiesta se viene superato il tempo massimo, ma verrà generato un evento. Per ulteriori informazioni, vedere Classe di evento CPU Threshold Exceeded.

  • REQUEST_MEMORY_GRANT_TIMEOUT_SEC = value
    Specifica il tempo massimo, in secondi, che una query può attendere prima che una concessione di memoria (memoria buffer di lavoro) diventi disponibile.

    Nota

    L'esecuzione della query può riuscire anche in caso di timeout relativo alla concessione di memoria. L'esito negativo di una query si verifica solo se sono in esecuzione più query simultaneamente. In caso contrario la query può ottenere solo la minima concessione di memoria, con una conseguente riduzione delle prestazioni.

    value deve essere un numero intero positivo. L'impostazione predefinita per value, 0, prevede l'utilizzo di un calcolo interno basato sul costo della query per determinare il tempo massimo.

  • MAX_DOP = value
    Specifica il massimo grado di parallelismo (DOP, Degree Of Parallelism) per le richieste parallele. value deve essere 0 o un numero intero positivo, da 1 a 255. Quando value è 0, il server sceglie il grado massimo di parallelismo. Si tratta del valore predefinito e dell'impostazione consigliata.

    Nota

    Il valore effettivo impostato da Motore di database per MAX_DOP potrebbe essere inferiore al valore specificato. Il valore finale è determinato dalla formula min(255, numero di CPU).

    Nota di attenzioneAttenzione

    La modifica di MAX_DOP può influire negativamente sulle prestazioni di un server. Se è necessario modificare MAX_DOP, si consiglia di impostarlo a un valore minore o uguale al numero massimo di utilità di pianificazione dell'hardware che sono presenti in un singolo nodo NUMA. Si consiglia di non impostare MAX_DOP a un valore maggiore di 8.

    MAX_DOP viene gestito nel modo seguente:

    • MAX_DOP, inteso come hint per la query, viene rispettato fintanto che non supera il valore MAX_DOP del gruppo di carico di lavoro.

    • MAX_DOP, inteso come hint per la query, ha sempre la precedenza sull'opzione "max degree of parallelism" di sp_configure.

    • Il valore MAX_DOP del gruppo di carico di lavoro ha sempre la precedenza sull'opzione "max degree of parallelism" di sp_configure.

    • Se la query viene contrassegnata come seriale (MAX_DOP = 1 ) in fase di compilazione, durante l'esecuzione non potrà ritornare a parallela, indipendentemente dal gruppo di carico di lavoro o dall'impostazione sp_configure.

    Dopo la configurazione di DOP, è possibile diminuire solo la richiesta di memoria concessa. La riconfigurazione del gruppo di carico di lavoro non è visibile durante l'attesa nella coda della memoria concessa.

  • GROUP_MAX_REQUESTS = value
    Specifica il numero massimo di richieste simultanee che possono essere eseguite nel gruppo di carico di lavoro. value deve essere 0 o un numero intero positivo. L'impostazione predefinita per value è 0, che consente un numero illimitato di richieste.

  • USING { pool_name | "default" }
    Associa il gruppo di carico di lavoro al pool di risorse definito dall'utente identificato da pool_name, in modo da inserire il gruppo di carico di lavoro nel pool di risorse. Se non viene specificato pool_name, o se l'argomento USING non viene utilizzato, il gruppo di carico di lavoro viene inserito nel pool di Resource Governor predefinito.

    Se utilizzata con ALTER WORKLOAD GROUP, l'opzione "default" deve essere delimitata da virgolette ("") o parentesi quadrate ([]) per evitare conflitti con DEFAULT, una parola riservata di sistema. Per ulteriori informazioni, vedere Identificatori delimitati (Motore di database).

    Nota

    Per l'opzione "default" si applica la distinzione tra maiuscole e minuscole.

Osservazioni

ALTER WORKLOAD GROUP è consentito nel gruppo predefinito.

Le modifiche alla configurazione del gruppo di carico di lavoro non hanno effetto fino all'esecuzione di ALTER RESOURCE GOVERNOR RECONFIGURE.

Per l'esecuzione di istruzioni DDL, è consigliabile avere familiarità con gli stati di Resource Governor. Per ulteriori informazioni, vedere Stati di Resource Governor.

REQUEST_MEMORY_GRANT_PERCENT: in SQL Server 2005 al fine di ottenere prestazioni ottimali è possibile utilizzare per la creazione dell'indice una quantità di memoria per l'area di lavoro maggiore di quella concessa inizialmente. Tale gestione particolare è supportata da Resource Governor in SQL Server 2008. La concessione iniziale, così come qualsiasi concessione supplementare, è tuttavia limitata dalle impostazioni del pool di risorse e del gruppo di carico di lavoro.

Creazione dell'indice in una tabella partizionata

La quantità di memoria utilizzata per la creazione dell'indice in una tabella partizionata non allineata è proporzionale al numero di partizioni coinvolte. Se la memoria totale necessaria supera il limite per query (REQUEST_MAX_MEMORY_GRANT_PERCENT) imposto dal gruppo di carico di lavoro di Resource Governor, la creazione dell'indice potrebbe non riuscire. Poiché il gruppo di carico di lavoro "default" consente a una query di superare il limite per query con la memoria minima necessaria per la compatibilità con SQL Server 2005, l'utente potrebbe essere in grado di eseguire la stessa creazione dell'indice in un gruppo di carico di lavoro "default", se nel pool di risorse "default" è configurata una quantità di memoria totale sufficiente per eseguire la query.

Autorizzazioni

È richiesta l'autorizzazione CONTROL SERVER.

Esempi

Nell'esempio seguente viene indicato come modificare l'importanza delle richieste nel gruppo predefinito da MEDIUM a LOW.

ALTER WORKLOAD GROUP "default"
WITH (IMPORTANCE = LOW)
GO
ALTER RESOURCE GOVERNOR RECONFIGURE
GO

Nell'esempio seguente viene indicato come spostare un gruppo di carico di lavoro dal pool in cui si trova al pool predefinito.

ALTER WORKLOAD GROUP adHoc
USING [default];
GO
ALTER RESOURCE GOVERNOR RECONFIGURE
GO