Convertire le classi di risorse in gruppi di carico di lavoro

I gruppi di carico di lavoro forniscono un meccanismo per isolare e contenere le risorse di sistema. I gruppi di carico di lavoro consentono inoltre di impostare regole di esecuzione per le richieste eseguite al loro interno. Una regola di esecuzione del timeout delle query consente l'annullamento delle query con eccessivo tempo di esecuzione senza intervento da parte dell'utente. Questo articolo illustra come usare una classe di risorse esistente e creare un gruppo di carico di lavoro con una configurazione simile. Inoltre, viene aggiunta una regola di timeout delle query facoltativa.

Nota

Per indicazioni sull'uso di gruppi di carico di lavoro e classi di risorse contemporaneamente, vedere la sezione Combinazione di assegnazioni di classi di risorse con classificatori dell'articolo Classificazione del carico di lavoro.

Informazioni sulla configurazione delle classi di risorse esistenti

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 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'

Nota

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

Poiché i gruppi di carico di lavoro operano in base a una percentuale di risorse di sistema complessive, quando si ridimensiona il carico di lavoro, cambia la percentuale di risorse allocate alle classi di risorse statiche rispetto alle risorse di sistema complessive. Ad esempio, staticrc40 con DW1000c alloca il 19,2% delle risorse di sistema complessive. Con DW2000c, viene allocato il 9,6%. Questo modello è simile se si vuole ridimensionare il carico di lavoro per la concorrenza rispetto all'allocazione di più risorse per richiesta.

Creare il 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. È possibile specificare facoltativamente un valore di MIN_PERCENTAGE_RESOURCE maggiore di zero per isolare le risorse per il gruppo di carico di lavoro. È anche possibile specificare facoltativamente un CAP_PERCENTAGE_RESOURCE minore 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 l'oggetto MIN_PERCENTAGE_RESOURCE per dedicare il 10% delle risorse di sistema a wgDataLoads e garantisce che una query possa essere eseguita tutte le volte. Inoltre, CAP_PERCENTAGE_RESOURCE è impostato sul 40% e limita questo gruppo di carico di lavoro a quattro richieste simultanee. Impostando il parametro QUERY_EXECUTION_TIMEOUT_SEC su 3600, tutte le query eseguite per più di un'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 la stessa funzionalità ed eseguire il mapping delle richieste ai gruppi di carico di lavoro, usare la sintassi CREATE WORKLOAD CLASSIFIER. L'uso di sp_addrolemember consentiva solo di eseguire il mapping delle risorse a una richiesta in base a un account di 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 sono riportate una query di esempio e una query DMV per verificare che il gruppo di 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