Condividi tramite


Convertire classi di risorse in gruppi di carico di lavoro

I gruppi di carico di lavoro forniscono un meccanismo per isolare e contenere risorse di sistema. Inoltre, i gruppi di carico di lavoro consentono di impostare le regole di esecuzione per le richieste in esecuzione. Una regola di timeout di esecuzione delle query consente di annullare le query incontrollate senza l'intervento dell'utente. Questo articolo illustra come accettare una classe di risorse esistente e creare un gruppo di carico di lavoro con una configurazione simile. Viene inoltre aggiunta una regola facoltativa di timeout della query.

Annotazioni

Vedere la sezione Combinazione di assegnazioni di classi di risorse con classificatori nel documento Concetto di classificazione del carico di lavoro per indicazioni sull'uso di gruppi di carico di lavoro e classi di risorse contemporaneamente.

Informazioni sulla configurazione della classe di risorse esistente

I gruppi di carico di lavoro richiedono un parametro denominato REQUEST_MIN_RESOURCE_GRANT_PERCENT che specifica la percentuale di risorse di sistema complessive allocate per ogni richiesta. L'allocazione delle risorse viene eseguita per le classi di risorse allocando gli slot di concorrenza. Per determinare il valore da specificare per REQUEST_MIN_RESOURCE_GRANT_PERCENT, usare la DMV sys.dm_workload_management_workload_groups_stats . Ad esempio, la query seguente restituisce un valore che può essere usato per il REQUEST_MIN_RESOURCE_GRANT_PERCENT parametro per creare un gruppo di carico di lavoro simile a staticrc40.

SELECT Request_min_resource_grant_percent = Effective_request_min_resource_grant_percent
  FROM sys.dm_workload_management_workload_groups_stats
  WHERE name = 'staticrc40'

Annotazioni

I gruppi di carico di lavoro operano in base alla percentuale delle risorse di sistema complessive.

Poiché i gruppi di carico di lavoro operano in base alla percentuale delle risorse di sistema complessive, quando si scala verso l'alto o verso il basso, la percentuale di risorse allocate alle classi di risorse statiche cambia rispetto alle risorse complessive del sistema. Ad esempio, staticrc40 in DW1000c alloca 19,2% delle risorse di sistema complessive. In DW2000c, vengono allocati 9,6%. Questo modello è simile se si vuole aumentare le prestazioni per la concorrenza rispetto all'allocazione di più risorse per richiesta.

Creare un gruppo di carico di lavoro

Con il noto REQUEST_MIN_RESOURCE_GRANT_PERCENT, è possibile usare la sintassi CREATE WORKLOAD GROUP per creare il gruppo di carico di lavoro. Facoltativamente, è possibile specificare un oggetto MIN_PERCENTAGE_RESOURCE maggiore di zero per isolare le risorse per il gruppo di carico di lavoro. Facoltativamente, è anche possibile specificare CAP_PERCENTAGE_RESOURCE meno di 100 per limitare la quantità di risorse che il gruppo di carico di lavoro può utilizzare.

Usando mediumrc come base per un esempio, il codice seguente imposta MIN_PERCENTAGE_RESOURCE per dedicare il 10% delle risorse di sistema a wgDataLoads e garantisce che una query possa essere eseguita in ogni momento. Inoltre, CAP_PERCENTAGE_RESOURCE è impostato su 40% e limita questo gruppo di carico di lavoro a quattro richieste simultanee. Impostando il QUERY_EXECUTION_TIMEOUT_SEC parametro su 3600, tutte le query eseguite per più di 1 ora verranno annullate automaticamente.

CREATE WORKLOAD GROUP wgDataLoads WITH  
( REQUEST_MIN_RESOURCE_GRANT_PERCENT = 10
 ,MIN_PERCENTAGE_RESOURCE = 10
 ,CAP_PERCENTAGE_RESOURCE = 40
 ,QUERY_EXECUTION_TIMEOUT_SEC = 3600)

Creare il classificatore

In precedenza, il mapping delle query alle classi di risorse veniva eseguito con sp_addrolemember. Per ottenere le stesse funzionalità ed eseguire il mapping delle richieste ai gruppi di carico di lavoro, usare la sintassi CREATE WORKLOAD CLASSIFIER . L'uso di sp_addrolemember permetteva solo di mappare le risorse a una richiesta in base a un accesso. Un classificatore fornisce opzioni aggiuntive oltre all'account di accesso, ad esempio: - etichetta - sessione - ora L'esempio seguente assegna le query dall'account AdfLogin di accesso che hanno anche OPTION LABEL impostato sul factloads gruppo wgDataLoads di carico di lavoro creato in precedenza.

CREATE WORKLOAD CLASSIFIER wcDataLoads WITH  
( WORKLOAD_GROUP = 'wgDataLoads'
 ,MEMBERNAME = 'AdfLogin'
 ,WLM_LABEL = 'factloads')

Eseguire test con una query di esempio

Di seguito è riportata una query di esempio e una query DMV per assicurarsi che il gruppo del carico di lavoro e il classificatore siano configurati correttamente.

SELECT SUSER_SNAME() --should be 'AdfLogin'

--change to a valid table AdfLogin has access to
SELECT TOP 10 *
  FROM nation
  OPTION (label='factloads')

SELECT request_id, [label], classifier_name, group_name, command
  FROM sys.dm_pdw_exec_requests
  WHERE [label] = 'factloads'
  ORDER BY submit_time DESC

Passaggi successivi