CREATE WORKLOAD CLASSIFIER (Transact-SQL)

Si applica a:Azure Synapse Analytics

Crea un oggetto classificatore da usare nella gestione del carico di lavoro. Il classificatore assegna le richieste in ingresso a un gruppo di carico di lavoro in base ai parametri specificati nella definizione dell'istruzione del classificatore stesso. I classificatori vengono valutati con ogni richiesta inviata. Se una richiesta non corrisponde a un classificatore, viene assegnata al gruppo di carico di lavoro predefinito. Il gruppo di carico di lavoro predefinito è la smallrc classe di risorse.

Nota

La classificazione dei comportamenti delle identità gestite differisce tra il pool SQL dedicato nelle aree di lavoro di Azure Synapse e il pool SQL dedicato autonomo (in precedenza SQL Data Warehouse). Mentre le identità gestite del pool SQL dedicato autonomo mantengono l'identità assegnata, le aree di lavoro di Azure Synapse aggiungono le identità gestite al ruolo dbo. Tali dimensioni non possono essere modificate. Il ruolo dbo , per impostazione predefinita, è classificato in smallrc. La creazione di un classificatore per il ruolo dbo consente di assegnare richieste a un gruppo di carico di lavoro diverso da smallrc. Se dbo da solo è troppo generico per la classificazione e ha un impatto più ampio, prendere in considerazione l'uso di etichetta, sessione o classificazione basata sul tempo insieme alla classificazione dei ruoli dbo .

Convenzioni di sintassi Transact-SQL

Sintassi

CREATE WORKLOAD CLASSIFIER classifier_name
WITH
    ( WORKLOAD_GROUP = 'name'
    , MEMBERNAME = 'security_account'
    [ [ , ] WLM_LABEL = 'label' ]
    [ [ , ] WLM_CONTEXT = 'context' ]
    [ [ , ] START_TIME = 'HH:MM' ]
    [ [ , ] END_TIME = 'HH:MM' ]
    [ [ , ] IMPORTANCE = { LOW | BELOW_NORMAL | NORMAL | ABOVE_NORMAL | HIGH } ] )
[ ; ]

Nota

Questa sintassi non è supportata da pool SQL serverless in Azure Synapse Analytics.

Argomenti

classifier_name

Specifica il nome con cui viene identificato il classificatore del carico di lavoro. classifier_name è sysname. Questo parametro può contenere fino a 128 caratteri e deve essere univoco all'interno dell'istanza.

WORKLOAD_GROUP = 'name'

Quando le regole del classificatore soddisfano le condizioni, name esegue il mapping della richiesta a un gruppo di carico di lavoro. name è sysname. Questo parametro può contenere fino a 128 caratteri e deve essere un nome di gruppo di carico di lavoro valido al momento della creazione del classificatore.

I gruppi del carico di lavoro disponibili sono reperibili nella vista del catalogo sys.workload_management_workload_groups.

MEMBERNAME = 'security_account'

Account di sicurezza usato per classificare in base a . security_account è sysname, senza impostazione predefinita. security_account può essere un utente del database, un ruolo del database, un account di accesso Microsoft Entra o un gruppo Microsoft Entra.

Nota

Usare la user_name() funzione, quando si è connessi al sistema, per verificare MEMBERNAME che il processo di classificazione userà per classificare la richiesta. La verifica di MEMBERNAME con la user_name() funzione può essere utile per la risoluzione dei problemi di classificazione dell'entità servizio o dell'ID Entra di Microsoft. Se user_name() restituisce dbo, è possibile usare dbo come per MEMBERNAME classificare le richieste. Tutti i membri del ruolo dbo verranno classificati. È anche possibile usare parametri di classificazione aggiuntivi, WLM_LABEL ad esempio o , WLM_CONTEXT per classificare in modo specifico le richieste da più account Microsoft Entra per eseguire il mapping al ruolo dbo .

WLM_LABEL

Specifica il valore dell'etichetta rispetto al quale è possibile classificare una richiesta. Label è un parametro facoltativo di tipo nvarchar(255). Usare OPTION (LABEL) nella richiesta per associare la configurazione del classificatore.

Ad esempio:

CREATE WORKLOAD CLASSIFIER wcELTLoads
WITH (
    WORKLOAD_GROUP = 'wgDataLoad',
    MEMBERNAME = 'ELTRole',
    WLM_LABEL = 'dimension_loads'
);
    
SELECT COUNT(*) FROM DimCustomer
OPTION (LABEL = 'dimension_loads');

WLM_CONTEXT

Specifica il valore del contesto della sessione rispetto al quale è possibile classificare una richiesta. WLM_CONTEXT è un parametro facoltativo di tipo nvarchar(255). Usare il sys.sp_set_session_context con il nome della variabile uguale a wlm_context prima di inviare una richiesta per impostare il contesto della sessione.

Ad esempio:

CREATE WORKLOAD CLASSIFIER wcDataLoad
WITH (
    WORKLOAD_GROUP = 'wgDataLoad',
    MEMBERNAME = 'ELTRole',
    WLM_CONTEXT = 'dim_load'
);

--set session context
EXEC sys.sp_set_session_context @key = 'wlm_context', @value = 'dim_load';

--run multiple statements using the wlm_context setting
SELECT COUNT(*) FROM stg.daily_customer_load;
SELECT COUNT(*) FROM stg.daily_sales_load;

--turn off the wlm_context session setting
EXEC sys.sp_set_session_context @key = 'wlm_context', @value = NULL;

START_TIME ed END_TIME

Specifica l'ora di inizio e l'ora di fine rispetto a cui una richiesta può essere classificata. Sia START_TIME che END_TIME sono del HH:mm formato nel fuso orario UTC. START_TIME e END_TIME devono essere specificati insieme.

Ad esempio:

CREATE WORKLOAD CLASSIFIER wcELTLoads
WITH (
    WORKLOAD_GROUP = 'wgDataLoads',
    MEMBERNAME = 'ELTRole',
    START_TIME = '22:00',
    END_TIME = '02:00'
);

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

Specifica l'importanza relativa di una richiesta. IMPORTANCE è una delle opzioni seguenti:

  • LOW
  • BELOW_NORMAL
  • NORMAL (predefinito)
  • ABOVE_NORMAL
  • HIGH

Se IMPORTANCE non viene specificato, viene usata l'impostazione dell'importanza del gruppo di carico di lavoro. L'importanza predefinita del gruppo di carico di lavoro è NORMAL. L'importanza ha effetti sull'ordine in cui le richieste vengono pianificate, offrendo quindi un accesso prioritario a risorse e blocchi.

Osservazioni:

Il numero massimo di classificatori definiti dall'utente è 100. Le configurazioni aggiuntive oltre questo limite non sono supportate. È consigliabile raggruppare i classificatori in una categoria comune per un'applicazione efficiente di un'unica impostazione, in più carichi di lavoro o utenti.

Ponderazione dei parametri di classificazione

Una richiesta può essere confrontata con più classificatori. Esiste un peso per i parametri del classificatore. Per assegnare un gruppo del carico di lavoro e una priorità, viene usato il classificatore con il valore di corrispondenza ponderata più alto. La ponderazione è basata sui criteri seguenti:

Parametro del classificatore Peso
USER 64
ROLE 32
WLM_LABEL 16
WLM_CONTEXT 8
START_TIME/END_TIME 4

Considerare le configurazioni dei classificatori seguenti.

CREATE WORKLOAD CLASSIFIER classifierA
WITH (
    WORKLOAD_GROUP = 'wgDashboards',
    MEMBERNAME = 'userloginA',
    IMPORTANCE = HIGH,
    WLM_LABEL = 'salereport'
);

CREATE WORKLOAD CLASSIFIER classifierB
WITH (
    WORKLOAD_GROUP = 'wgUserQueries',
    MEMBERNAME = 'userloginA',
    IMPORTANCE = LOW,
    START_TIME = '18:00',
    END_TIME = '07:00'
);

L'utente userloginA è configurato per entrambi i classificatori. Se userloginA esegue una query con un'etichetta uguale a salesreport tra le 16:00 e le 7:00 UTC, la richiesta viene classificata nel gruppo di wgDashboards carico di lavoro con HIGH importanza. L'aspettativa potrebbe essere classificare la richiesta a wgUserQueries con importanza per la creazione di report fuori orario, ma la ponderazione di WLM_LABEL è superiore aEND_TIMESTART_TIME/ .LOW Il peso di è ( per l'utente, più 16 per WLM_LABEL).6480classifierA Il peso di è ( per l'utente, 4 per START_TIMEEND_TIME/).6468classifierB In questo caso, è possibile aggiungere WLM_LABEL a classifierB.

Per altre informazioni, vedere Ponderazione del carico di lavoro.

Autorizzazioni

È richiesta l'autorizzazione CONTROL DATABASE.

Esempi

Nell'esempio riportato di seguito viene illustrato come creare un classificatore del carico di lavoro denominato wgcELTRole. Usa il staticrc20 gruppo di carico di lavoro, l'utente ELTRolee imposta l'elemento IMPORTANCE su ABOVE_NORMAL.

CREATE WORKLOAD CLASSIFIER wgcELTRole
WITH (
    WORKLOAD_GROUP = 'staticrc20',
    MEMBERNAME = 'ELTRole',
    IMPORTANCE = ABOVE_NORMAL
);