ALTER WORKLOAD GROUP (Transact-SQL)

Selezionare un prodotto

Nella riga seguente selezionare il nome del prodotto a cui si è interessati. Verranno visualizzate solo le informazioni per tale prodotto.

* SQL Server *  

 

SQL Server e Istanza gestita di 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.

Nota

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

Convenzioni di 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"

Il nome di un gruppo di carico di lavoro esistente definito dall'utente o del gruppo di carico di lavoro predefinito di Resource Governor. Resource Governor crea i gruppi "predefiniti" e interni all'installazione di SQL Server.

L'opzione "default" deve essere racchiusa tra virgolette () o parentesi quadre (""[]) se usata con ALTER WORKLOAD GROUP per evitare conflitti con DEFAULT, ovvero una parola riservata di sistema. Per altre informazioni, vedere Identificatori del database.

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. I server con regole di confronto senza distinzione tra maiuscole e minuscole, ad esempio SQL_Latin1_General_CP1_CI_AS, tratteranno "default" e "Default" come lo stesso.

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

Internamente, ogni impostazione dell'importanza viene memorizzata come un numero usato 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. value è una percentuale relativa alla dimensione del pool di risorse specificata da MAX_MEMORY_PERCENT. Il valore predefinito è 25. La quantità specificata si riferisce solo alla memoria di concessione per l'esecuzione della query.

value è un valore int fino a SQL Server 2017 (14.x) e l'intervallo consentito è compreso tra 1 e 100. A partire da SQL Server 2019 (15.x), il valore è un tipo di dati float e l'intervallo consentito è compreso tra 0 e 100.

Importante

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

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

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 ha memoria fisica sufficiente.

REQUEST_MAX_CPU_TIME_SEC = value

Viene specificato il tempo massimo della CPU, in secondi, utilizzabile da una richiesta. value deve essere 0 o un valore intero positivo. L'impostazione predefinita per value è 0, ovvero un valore illimitato. Per impostazione predefinita, Resource Governor non impedirà la continuazione di una richiesta se viene superato il tempo massimo, ma verrà generato un evento. Per altre informazioni, vedere Classe di evento CPU Threshold Exceeded.

A partire da SQL Server 2016 (13.x) SP2 e SQL Server 2017 (14.x) CU3 e con l'uso del flag di traccia 2422, Resource Governor interrompe una richiesta se viene superato il tempo massimo.

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.

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, usa un calcolo interno basato sul costo della query per determinare il tempo massimo.

MAX_DOP = value

Viene specificato il grado massimo di parallelismo (DOP) 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 dell'impostazione predefinita e consigliata.

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

Attenzione

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 è contrassegnata come seriale (MAX_DOP = 1) in fase di compilazione, non può essere modificata in parallelo in fase di esecuzione 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

Viene specificato il numero massimo di richieste simultanee eseguibili nel gruppo del carico di lavoro. value deve essere 0 o un valore intero positivo. L'impostazione predefinita per value, vale a dire 0, consente un numero illimitato di richieste. Quando viene raggiunto il numero massimo di richieste simultanee, un utente in quel gruppo può effettuare l'accesso, ma viene inserito in uno stato di attesa fino a quando le richieste simultanee non sono inferiori al valore specificato.

USING { pool_name | "default" }

Associa il gruppo del carico di lavoro al pool di risorse definito dall'utente identificato da pool_name, in modo da inserire il gruppo del carico di lavoro nel pool di risorse. Se pool_name non viene specificato o non si usa l'argomento USING, il gruppo di carico di lavoro viene inserito nel pool predefinito di Resource Governor.

L'opzione "default" fa distinzione tra maiuscole e minuscole e deve essere racchiusa tra virgolette ("") o parentesi quadre ([]) se usata con ALTER WORKLOAD GROUP per evitare conflitti con DEFAULT, ovvero una parola riservata di sistema. Per altre informazioni, vedere Identificatori del database.

Osservazioni:

ALTER WORKLOAD GROUP è consentito nel gruppo predefinito.

Le modifiche apportate alla configurazione del gruppo di carico di lavoro hanno effetto solo dopo l'esecuzione di ALTER RESOURCE GOVERNOR RECONFIGURE. Quando si cambia un'impostazione che influisce sul piano, la nuova impostazione avrà effetto nei piani memorizzati precedentemente nella cache solo dopo l'esecuzione di DBCC FREEPROCCACHE (*pool_name*), dove pool_name è il nome di un pool di risorse di Resource Governor a cui è associato il gruppo di carico di lavoro.

  • Se si imposta MAX_DOP su 1, non è necessario eseguire DBCC FREEPROCCACHE perché i piani paralleli possono essere eseguiti in modalità seriale. Potrebbe però non essere efficiente quanto un piano compilato come piano seriale.

  • Se si cambia MAX_DOP da 1 a 0 o a un valore maggiore di 1, non è necessario eseguire DBCC FREEPROCCACHE. I piani seriali non possono però essere eseguiti in parallelo. È quindi necessario cancellare la cache corrispondente in modo che i nuovi piani possano essere potenzialmente compilati tramite il parallelismo.

Attenzione

La cancellazione dei piani memorizzati nella cache da un pool di risorse associato a più di un gruppo del carico di lavoro avrà effetto su tutti i gruppi di carico di lavoro che hanno il pool di risorse definito dall'utente identificato da pool_name.

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

REQUEST_MEMORY_GRANT_PERCENT: in SQL Server 2005 (9.x), la creazione dell'indice può usare più memoria dell'area di lavoro di quanto inizialmente concesso per migliorare le prestazioni. Questa speciale gestione è supportata da Resource Governor nelle versioni successive, tuttavia, la concessione iniziale ed eventuali concessioni di memoria aggiuntiva sono limitate dalle impostazioni di gruppo del carico di lavoro e dal pool di risorse.

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 richiesta supera il limite per query (REQUEST_MAX_MEMORY_GRANT_PERCENT) imposto dall'impostazione del gruppo di carico di lavoro di Resource Governor, questa creazione dell'indice potrebbe non riuscire a essere eseguita. 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 (9.x), l'utente potrebbe essere in grado di eseguire la stessa creazione dell'indice nel gruppo di carico di lavoro "default" se nel pool di risorse predefinito è configurata una quantità di memoria totale sufficiente per eseguire tale 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

L'esempio seguente mostra 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

Vedi anche

* Istanza gestita di SQL *  

 

SQL Server e Istanza gestita di 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.

Nota

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

Convenzioni di 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"

Il nome di un gruppo di carico di lavoro esistente definito dall'utente o del gruppo di carico di lavoro predefinito di Resource Governor. Resource Governor crea i gruppi "predefiniti" e interni all'installazione di SQL Server.

L'opzione "default" deve essere racchiusa tra virgolette () o parentesi quadre (""[]) se usata con ALTER WORKLOAD GROUP per evitare conflitti con DEFAULT, ovvero una parola riservata di sistema. Per altre informazioni, vedere Identificatori del database.

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. I server con regole di confronto senza distinzione tra maiuscole e minuscole, ad esempio SQL_Latin1_General_CP1_CI_AS, tratteranno "default" e "Default" come lo stesso.

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

Internamente, ogni impostazione dell'importanza viene memorizzata come un numero usato 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. value è una percentuale relativa alla dimensione del pool di risorse specificata da MAX_MEMORY_PERCENT. Il valore predefinito è 25. La quantità specificata si riferisce solo alla memoria di concessione per l'esecuzione della query.

value è un valore int fino a SQL Server 2017 (14.x) e l'intervallo consentito è compreso tra 1 e 100. A partire da SQL Server 2019 (15.x), il valore è un tipo di dati float e l'intervallo consentito è compreso tra 0 e 100.

Importante

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

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

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 ha memoria fisica sufficiente.

REQUEST_MAX_CPU_TIME_SEC = value

Viene specificato il tempo massimo della CPU, in secondi, utilizzabile da una richiesta. value deve essere 0 o un valore intero positivo. L'impostazione predefinita per value è 0, ovvero un valore illimitato. Per impostazione predefinita, Resource Governor non impedirà la continuazione di una richiesta se viene superato il tempo massimo, ma verrà generato un evento. Per altre informazioni, vedere Classe di evento CPU Threshold Exceeded.

A partire da SQL Server 2016 (13.x) SP2 e SQL Server 2017 (14.x) CU3 e con l'uso del flag di traccia 2422, Resource Governor interrompe una richiesta se viene superato il tempo massimo.

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.

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, usa un calcolo interno basato sul costo della query per determinare il tempo massimo.

MAX_DOP = value

Viene specificato il grado massimo di parallelismo (DOP) 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 dell'impostazione predefinita e consigliata.

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

Attenzione

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 è contrassegnata come seriale (MAX_DOP = 1) in fase di compilazione, non può essere modificata in parallelo in fase di esecuzione 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

Viene specificato il numero massimo di richieste simultanee eseguibili nel gruppo del carico di lavoro. value deve essere 0 o un valore intero positivo. L'impostazione predefinita per value, vale a dire 0, consente un numero illimitato di richieste. Quando viene raggiunto il numero massimo di richieste simultanee, un utente in quel gruppo può effettuare l'accesso, ma viene inserito in uno stato di attesa fino a quando le richieste simultanee non sono inferiori al valore specificato.

USING { pool_name | "default" }

Associa il gruppo del carico di lavoro al pool di risorse definito dall'utente identificato da pool_name, in modo da inserire il gruppo del carico di lavoro nel pool di risorse. Se pool_name non viene specificato o non si usa l'argomento USING, il gruppo di carico di lavoro viene inserito nel pool predefinito di Resource Governor.

L'opzione "default" fa distinzione tra maiuscole e minuscole e deve essere racchiusa tra virgolette ("") o parentesi quadre ([]) se usata con ALTER WORKLOAD GROUP per evitare conflitti con DEFAULT, ovvero una parola riservata di sistema. Per altre informazioni, vedere Identificatori del database.

Osservazioni:

ALTER WORKLOAD GROUP è consentito nel gruppo predefinito.

Le modifiche apportate alla configurazione del gruppo di carico di lavoro hanno effetto solo dopo l'esecuzione di ALTER RESOURCE GOVERNOR RECONFIGURE. Quando si cambia un'impostazione che influisce sul piano, la nuova impostazione avrà effetto nei piani memorizzati precedentemente nella cache solo dopo l'esecuzione di DBCC FREEPROCCACHE (*pool_name*), dove pool_name è il nome di un pool di risorse di Resource Governor a cui è associato il gruppo di carico di lavoro.

  • Se si imposta MAX_DOP su 1, non è necessario eseguire DBCC FREEPROCCACHE perché i piani paralleli possono essere eseguiti in modalità seriale. Potrebbe però non essere efficiente quanto un piano compilato come piano seriale.

  • Se si cambia MAX_DOP da 1 a 0 o a un valore maggiore di 1, non è necessario eseguire DBCC FREEPROCCACHE. I piani seriali non possono però essere eseguiti in parallelo. È quindi necessario cancellare la cache corrispondente in modo che i nuovi piani possano essere potenzialmente compilati tramite il parallelismo.

Attenzione

La cancellazione dei piani memorizzati nella cache da un pool di risorse associato a più di un gruppo del carico di lavoro avrà effetto su tutti i gruppi di carico di lavoro che hanno il pool di risorse definito dall'utente identificato da pool_name.

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

REQUEST_MEMORY_GRANT_PERCENT: in SQL Server 2005 (9.x), la creazione dell'indice può usare più memoria dell'area di lavoro di quanto inizialmente concesso per migliorare le prestazioni. Questa speciale gestione è supportata da Resource Governor nelle versioni successive, tuttavia, la concessione iniziale ed eventuali concessioni di memoria aggiuntiva sono limitate dalle impostazioni di gruppo del carico di lavoro e dal pool di risorse.

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 richiesta supera il limite per query (REQUEST_MAX_MEMORY_GRANT_PERCENT) imposto dall'impostazione del gruppo di carico di lavoro di Resource Governor, questa creazione dell'indice potrebbe non riuscire a essere eseguita. 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 (9.x), l'utente potrebbe essere in grado di eseguire la stessa creazione dell'indice nel gruppo di carico di lavoro "default" se nel pool di risorse predefinito è configurata una quantità di memoria totale sufficiente per eseguire tale 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

L'esempio seguente mostra 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

Vedi anche

* Azure Synapse
Analytics *
 

 

Azure Synapse Analytics

Modifica un gruppo di carico di lavoro esistente.

Per altri dettagli sul comportamento di ALTER WORKLOAD GROUP in un sistema con richieste in esecuzione e in coda, vedere la sezione relativa al comportamento di ALTER WORKLOAD GROUP di seguito.

Le restrizioni esistenti per CREATE WORKLOAD GROUP si applicano anche a ALTER WORKLOAD GROUP. Prima di modificare i parametri, eseguire una query in sys.workload_management_workload_groups per assicurarsi che i valori siano compresi negli intervalli accettabili.

Sintassi

ALTER WORKLOAD GROUP group_name
WITH
([ MIN_PERCENTAGE_RESOURCE = value ]
  [ [ , ] CAP_PERCENTAGE_RESOURCE = value ]
  [ [ , ] REQUEST_MIN_RESOURCE_GRANT_PERCENT = value ]
  [ [ , ] REQUEST_MAX_RESOURCE_GRANT_PERCENT = value ]
  [ [ , ] IMPORTANCE = { LOW | BELOW_NORMAL | NORMAL | ABOVE_NORMAL | HIGH }]
  [ [ , ] QUERY_EXECUTION_TIMEOUT_SEC = value ] )
  [ ; ]

Argomenti

group_name

Nome del gruppo di carico di lavoro esistente definito dall'utente in corso di modifica. group_name non è modificabile.

MIN_PERCENTAGE_RESOURCE = valore

Il valore è un numero intero compreso tra 0 e 100. Quando si modifica MIN_PERCENTAGE_RESOURCE, la somma di MIN_PERCENTAGE_RESOURCE tra tutti i gruppi di carico di lavoro non può essere maggiore di 100. La modifica di MIN_PERCENTAGE_RESOURCE richiede che tutte le query in esecuzione vengano completate nel gruppo di carico di lavoro prima che venga completato il comando. Per altre informazioni, vedere la sezione Comportamento di ALTER WORKLOAD GROUP in questo articolo.

CAP_PERCENTAGE_RESOURCE = valore

valore è un numero intero compreso tra 1 e 100. Il valore di CAP_PERCENTAGE_RESOURCE deve essere maggiore di MIN_PERCENTAGE_RESOURCE. La modifica di CAP_PERCENTAGE_RESOURCE richiede che tutte le query in esecuzione vengano completate nel gruppo di carico di lavoro prima che venga completato il comando. Per altre informazioni, vedere la sezione Comportamento di ALTER WORKLOAD GROUP in questo articolo.

REQUEST_MIN_RESOURCE_GRANT_PERCENT = valore

valore è un numero decimale compreso nell'intervallo tra 0,75 e 100,00. Il valore di REQUEST_MIN_RESOURCE_GRANT_PERCENT deve essere un fattore diMIN_PERCENTAGE_RESOURCE e deve essere minore di CAP_PERCENTAGE_RESOURCE.

REQUEST_MAX_RESOURCE_GRANT_PERCENT = valore

valore è un numero decimale e deve essere maggiore di REQUEST_MIN_RESOURCE_GRANT_PERCENT.

IMPORTANCE = { LOW | BELOW_NORMAL | NORMAL | ABOVE_NORMAL | HIGH }

Modifica l'importanza predefinita di una richiesta per il gruppo di carico di lavoro.

QUERY_EXECUTION_TIMEOUT_SEC = value

Modifica il tempo massimo di esecuzione di una query, in secondi, prima che venga annullata. Il valore deve essere 0 o un numero intero positivo. L'impostazione predefinita per il valore è 0, ovvero un valore illimitato.

Autorizzazioni

È richiesta l'autorizzazione CONTROL DATABASE.

Esempio

Nell'esempio seguente vengono controllati i valori nella vista del catalogo per un gruppo di carico di lavoro denominato wgDataLoads e quindi vengono modificati.

SELECT *
FROM sys.workload_management_workload_groups
WHERE [name] = 'wgDataLoads'

ALTER WORKLOAD GROUP wgDataLoads WITH
( MIN_PERCENTAGE_RESOURCE            = 40
, CAP_PERCENTAGE_RESOURCE            = 80
, REQUEST_MIN_RESOURCE_GRANT_PERCENT = 10 )

Comportamento di ALTER WORKLOAD GROUP

In qualsiasi momento esistono tre tipi di richieste nel sistema:

  • Richieste non ancora classificate.
  • Richieste classificate e in attesa di blocchi di oggetti o risorse di sistema.
  • Richieste classificate e in esecuzione.

In base alle proprietà del gruppo di carico di lavoro da modificare, la tempistica con cui le impostazioni diventano effettive varia.

Importance o query_execution_timeout

Per le proprietà importance e query_execution_timeout, le richieste non classificate prelevano i nuovi valori di configurazione. Le richieste in attesa e in esecuzione vengono eseguite con la configurazione precedente. La richiesta ALTER WORKLOAD GROUP viene eseguita immediatamente indipendentemente dalla presenza di query in esecuzione nel gruppo di carico di lavoro.

REQUEST_MIN_RESOURCE_GRANT_PERCENT o REQUEST_MAX_RESOURCE_GRANT_PERCENT

Per REQUEST_MIN_RESOURCE_GRANT_PERCENT e REQUEST_MAX_RESOURCE_GRANT_PERCENT, le richieste in esecuzione vengono eseguite con la configurazione precedente. Le richieste in attesa e non classificate prelevano i valori della nuova configurazione. La richiesta ALTER WORKLOAD GROUP viene eseguita immediatamente indipendentemente dalla presenza di query in esecuzione nel gruppo di carico di lavoro.

MIN_PERCENTAGE_RESOURCE o CAP_PERCENTAGE_RESOURCE

Per MIN_PERCENTAGE_RESOURCE e CAP_PERCENTAGE_RESOURCE, le richieste in esecuzione vengono eseguite con la configurazione precedente. Le richieste in attesa e non classificate prelevano i valori della nuova configurazione.

Per cambiare min_percentage_resource e cap_percentage_resource, è necessario scaricare le richieste in esecuzione nel gruppo di carico di lavoro in corso di modifica. Quando si diminuisce MIN_PERCENTAGE_RESOURCE, le risorse liberate vengono restituite al pool di condivisione consentendone l'utilizzo per le richieste provenienti da altri gruppi di carico di lavoro. Viceversa, se si aumenta MIN_PERCENTAGE_RESOURCE sarà necessario attendere fino al completamento delle richieste che utilizzano solo le risorse necessarie dal pool di condiviso. L'operazione ALTER WORKLOAD GROUP avrà accesso prioritario alle risorse condivise rispetto alle altre richieste in attesa di essere eseguite nel pool condiviso. Se la somma di MIN_PERCENTAGE_RESOURCEe supera il 100%, la richiesta ALTER WORKLOAD GROUP ha esito negativo immediatamente.

Comportamento di blocco

La modifica di un gruppo di carico di lavoro richiede un blocco globale tra tutti i gruppi di carico di lavoro. Una richiesta di modifica di un gruppo di carico di lavoro viene accodata alle richieste già inviate di creazione o eliminazione di gruppi di carico di lavoro. Se viene inviato in contemporanea un batch di istruzioni ALTER, queste vengono elaborate nell'ordine in cui vengono inviate.

Vedi anche