Classificazione del carico di lavoro per il pool SQL dedicato in Azure Synapse Analytics
Questo articolo illustra il processo di classificazione del carico di lavoro per assegnare un gruppo di carico di lavoro e la priorità alle richieste in ingresso con pool SQL dedicati in Azure Synapse.
Classificazione
La classificazione della gestione del carico di lavoro consente di applicare i criteri del carico di lavoro alle richieste tramite l'assegnazione di classi di risorse e priorità.
Benché esistano molti modi per classificare i carichi di lavoro dei data warehouse, la classificazione più semplice e comune è il caricamento e l'esecuzione di query. I dati vengono caricati tramite istruzioni INSERT, UPDATE e DELETE. Le query sui dati vengono eseguite con istruzioni SELECT. Una soluzione di data warehousing avrà spesso un criterio del carico di lavoro per l'attività di caricamento, come l'assegnazione di una classe di risorse superiore con più risorse. Un criterio del carico di lavoro diverso può essere applicato alle query, ad esempio un'importanza inferiore rispetto alle attività di caricamento.
È anche possibile sottoclassificare i carichi di lavoro di caricamento e query. La sottoclassificazione offre un maggiore controllo sui carichi di lavoro. Ad esempio, i carichi di lavoro di query possono essere costituiti da aggiornamenti del cubo, query del dashboard o query ad hoc. È possibile classificare ognuno di questi carichi di lavoro delle query con diverse classi di risorse o impostazioni di importanza. Anche il caricamento può trarre vantaggio dalla sottoclassificazione. Le trasformazioni di grandi dimensioni possono essere assegnate a classi di risorse maggiori. È possibile specificare una maggiore importanza per garantire che i dati sulle vendite chiave siano caricati prima dei dati meteorologici o di un feed di dati sui social media.
Non tutte le istruzioni vengono classificate dal momento che non richiedono risorse o importanza per influenzare l'esecuzione. I comandi DBCC
e le istruzioni BEGIN
, COMMIT
e ROLLBACK TRANSACTION
non vengono classificati.
Processo di classificazione
Al momento la classificazione per il pool SQL dedicato si ottiene assegnando gli utenti a un ruolo con una classe di risorse corrispondente assegnata tramite sp_addrolemember. La possibilità di caratterizzare le richieste oltre un account di accesso a una classe di risorse è limitata con questa funzionalità. È ora disponibile un metodo più completo per la classificazione con la sintassi CREATE WORKLOAD CLASSIFIER. Con questa sintassi, gli utenti del pool SQL dedicato possono assegnare la priorità e la quantità di risorse di sistema assegnate a una richiesta tramite il parametro workload_group
.
Ponderazione della classificazione
Come parte del processo di classificazione, è stata eseguita la ponderazione per determinare quale gruppo di carico di lavoro è assegnato. La ponderazione è basata sui criteri seguenti:
Parametro di classificatore | Peso |
---|---|
MEMBERNAME:USER | 64 |
MEMBERNAME:ROLE | 32 |
WLM_LABEL | 16 |
WLM_CONTEXT | 8 |
START_TIME/END_TIME | 4 |
Il parametro MEMBERNAME
è obbligatorio. Tuttavia, se il nome del membro specificato è un utente del database anziché un ruolo del database, la ponderazione per l’utente è superiore e quindi viene scelto tale classificatore.
Se un utente è membro di più ruoli con diverse classi di risorse assegnate o corrispondenti in più classificatori, all'utente verrà attribuita l'assegnazione della classe di risorse più elevata. Questo comportamento è coerente con il comportamento di assegnazione della classe di risorse esistente.
Nota
La classificazione del comportamento delle identità gestite è diversa tra il pool SQL dedicato nelle aree di lavoro di Azure Synapse e il pool SQL dedicato autonomo, in precedenza SQL Data Warehouse. Mentre l’identità gestita del pool SQL dedicato autonomo mantiene l’identità assegnata, per le aree di lavoro di Azure Synapse, l’identità gestita viene eseguita come dbo
. Questa impostazione non può essere modificata. Il ruolo dbo per impostazione predefinita è classificato in smallrc. La creazione di un classificatore per il ruolo dbo consente di assegnare le 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 una classificazione basata su etichetta, sessione o tempo insieme alla classificazione del ruolo dbo.
Ad eccezione di smallrc, le classi di risorse dinamiche vengono implementate come ruoli del database predefiniti. Smallrc non viene visualizzato come ruolo del database ma è la classe di risorse predefinita.
Classificatori di sistema
La classificazione del carico di lavoro include classificatori del carico di lavoro di sistema. I classificatori di sistema eseguono il mapping delle appartenenze dei ruoli della classe di risorse esistenti alle allocazioni di risorse della classe di risorse con priorità normale. I classificatori di sistema non possono essere eliminati. Per visualizzare i classificatori di sistema, è possibile eseguire la query seguente:
SELECT * FROM sys.workload_management_workload_classifiers where classifier_id <= 12
Combinare assegnazioni di classi di risorse con classificatori
I classificatori di sistema creati per conto dell'utente forniscono un percorso semplice per eseguire la migrazione alla classificazione del carico di lavoro. L’uso di mapping di ruoli della classe di risorse con precedenza di classificazione può causare errori di classificazione quando si inizia a creare nuovi classificatori con importanza.
Prendi in considerazione lo scenario seguente:
- Un data warehouse esistente ha un utente del database DBAUser assegnato al ruolo della classe di risorse largerc. L’assegnazione della classe di risorse è stata eseguita con
sp_addrolemember.
- Il data warehouse viene ora aggiornato con la gestione del carico di lavoro.
- Per testare la nuova sintassi di classificazione, il ruolo del database DBARole (di cui DBAUser è membro), ha un classificatore creato per i quali esegue il mapping a mediumrc e priorità elevata.
- Quando DBAUser accede ed esegue una query, la query verrà assegnata a largerc. Poiché un utente ha la precedenza sull'appartenenza a un ruolo.
Per semplificare la risoluzione dei problemi di classificazione errata, è consigliabile rimuovere i mapping dei ruoli della classe di risorse durante la creazione di classificatori del carico di lavoro. Il codice seguente restituisce le appartenenze ai ruoli della classe di risorse esistenti. Eseguire sp_droprolemember per ogni nome membro restituito dalla classe di risorse corrispondente.
SELECT r.name AS [Resource Class]
, m.name AS membername
FROM sys.database_role_members rm
JOIN sys.database_principals AS r ON rm.role_principal_id = r.principal_id
JOIN sys.database_principals AS m ON rm.member_principal_id = m.principal_id
WHERE r.name IN ('mediumrc','largerc','xlargerc','staticrc10','staticrc20','staticrc30','staticrc40','staticrc50','staticrc60','staticrc70','staticrc80');
--for each row returned run in the previous query
EXEC sp_droprolemember '[Resource Class]', membername;
Contenuto correlato
- Per altre informazioni sulla creazione di un classificatore, vedere CREATE WORKLOAD CLASSIFIER (Transact-SQL).
- Vedere l'Avvio rapido su come creare un classificatore del carico di lavoro Creare un classificatore del carico di lavoro.
- Vedere gli articoli sulle procedure per configurare la priorità del carico di lavoro e per gestire e monitorare la priorità del carico di lavoro.
- Consultare sys.dm_pdw_exec_requests per visualizzare le query e la loro priorità.