CREATE WORKLOAD GROUP (Transact-SQL)

Viene creato un gruppo del carico di lavoro di Resource Governor e viene associato al pool di risorse di Resource Governor: Resource Governor è disponibile solo nelle edizioni Enterprise, Developer ed Evaluation di SQL Server.

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

Sintassi

CREATE WORKLOAD GROUP group_name
[ 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
    Nome definito dall'utente per il gruppo del carico di lavoro. group_name è alfanumerico, può essere composto da 128 caratteri, deve essere univoco all'interno di un'istanza di SQL Server e deve essere conforme alle regole per gli identificatori.

  • IMPORTANCE = { LOW | MEDIUM | HIGH }
    Specifica l'importanza relativa di una richiesta nel gruppo del carico di lavoro. L'importanza è compresa fra le seguenti, MEDIUM è l'impostazione predefinita:

    • LOW

    • MEDIUM

    • 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 della 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 della CPU, in secondi, utilizzabile da una richiesta. value deve essere 0 o un numero intero positivo. L'impostazione predefinita per value è 0, ovvero un tempo illimitato.

    [!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
    Viene specificato il tempo massimo, in secondi, di attesa di una query prima che una concessione di memoria (memoria buffer di lavoro) diventi disponibile.

    [!NOTA]

    È possibile eseguire la query 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 0 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.

  • 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. L'intervallo consentito per value è compreso tra 0 e 64. L'impostazione predefinita per value (0) prevede l'utilizzo dell'impostazione globale. MAX_DOP viene gestito nel modo seguente:

    • MAXDOP, inteso come hint per la query, è efficace finché non supera il valore MAX_DOP del gruppo del carico di lavoro.

    • MAXDOP, come hint per la query, consente di eseguire sempre l'override di sp_configure 'max degree of parallelism'.

    • MAX_DOP del gruppo del carico di lavoro consente di eseguire l'override di sp_configure 'max degree of parallelism'.

    • Se la query viene contrassegnata come seriale in fase di compilazione, durante l'esecuzione non potrà ritornare a parallela, indipendentemente dal gruppo del 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 eseguibili nel gruppo del 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 del carico di lavoro al pool di risorse definito dall'utente identificato da pool_name. In questo modo il gruppo del carico di lavoro viene inserito nel pool di risorse. Se non viene fornito pool_name, o se l'argomento USING non è utilizzato, il gruppo del carico di lavoro viene inserito nel pool di Resource Governor predefinito.

    "default" è una parola riservata, se utilizzata con USING deve essere delimitata da virgolette ("") o parentesi quadrate ([]). Per ulteriori informazioni, vedere Identificatori delimitati (Motore di database).

    [!NOTA]

    Per i gruppi di carico di lavoro e i 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. In 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.

Osservazioni

REQUEST_MEMORY_GRANT_PERCENT: in SQL Server 2005 per la creazione dell'indice è possibile utilizzare più memoria per area di lavoro di quella concessa inizialmente al fine di ottenere prestazioni ottimali. 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 riportato di seguito viene mostrato come creare un gruppo del carico di lavoro denominato newReports. Vengono utilizzate le impostazioni predefinite di Resource Governor e tale gruppo è contenuto nel pool predefinito di Resource Governor. Nell'esempio viene specificato il pool default, ma questo non è necessario.

CREATE WORKLOAD GROUP newReports
    USING "default" ;
GO

Cronologia modifiche

Contenuto aggiornato

Aggiunta delle informazioni "Tenere presente quanto segue" alla descrizione dell'argomento REQUEST_MAX_MEMORY_GRANT_PERCENT.