Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Tecniche per l'analisi del carico di lavoro del pool SQL dedicato in Azure Synapse Analytics.
Classi di risorse
Il pool SQL dedicato fornisce classi di risorse per assegnare risorse di sistema alle query. Per altre informazioni sulle classi di risorse, vedere Classi di risorse e gestione del carico di lavoro. Le query attenderanno se la classe di risorse assegnata a una query richiede più risorse di quelle attualmente disponibili.
Rilevamento di query in coda e altre viste a gestione dinamica
È possibile usare la sys.dm_pdw_exec_requests DMV per identificare le query in attesa in una coda di concorrenza. Le query in attesa di uno slot di concorrenza sono in stato sospeso.
SELECT r.[request_id] AS Request_ID
, r.[status] AS Request_Status
, r.[submit_time] AS Request_SubmitTime
, r.[start_time] AS Request_StartTime
, DATEDIFF(ms,[submit_time],[start_time]) AS Request_InitiateDuration_ms
, r.resource_class AS Request_resource_class
FROM sys.dm_pdw_exec_requests r
;
I ruoli di gestione del carico di lavoro possono essere visualizzati con sys.database_principals.
SELECT ro.[name] AS [db_role_name]
FROM sys.database_principals ro
WHERE ro.[type_desc] = 'DATABASE_ROLE'
AND ro.[is_fixed_role] = 0
;
La query seguente mostra il ruolo a cui viene assegnato ogni utente.
SELECT r.name AS role_principal_name
, m.name AS member_principal_name
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')
;
Il pool SQL dedicato ha i tipi di attesa seguenti:
-
LocalQueriesConcurrencyResourceType: query che si trovano all'esterno del framework di slot di concorrenza. Le query DMV e le funzioni di sistema, come
SELECT @@VERSION, sono esempi di query locali. - UserConcurrencyResourceType: query che rientrano nel framework degli slot di concorrenza. Le query sulle tabelle degli utenti finali rappresentano esempi che userebbero questo tipo di risorsa.
- DmsConcurrencyResourceType: attese risultanti dalle operazioni di spostamento dei dati.
- BackupConcurrencyResourceType: questa attesa indica che viene eseguito il backup di un database. Il valore massimo per questo tipo di risorsa è 1. Se vengono richiesti più backup contemporaneamente, gli altri si mettono in coda. In generale, è consigliabile un tempo minimo tra snapshot consecutivi di 10 minuti.
La DMV sys.dm_pdw_waits può essere usata per visualizzare le risorse per cui una richiesta è in attesa.
SELECT w.[wait_id]
, w.[session_id]
, w.[type] AS Wait_type
, w.[object_type]
, w.[object_name]
, w.[request_id]
, w.[request_time]
, w.[acquire_time]
, w.[state]
, w.[priority]
, SESSION_ID() AS Current_session
, s.[status] AS Session_status
, s.[login_name]
, s.[query_count]
, s.[client_id]
, s.[sql_spid]
, r.[command] AS Request_command
, r.[label]
, r.[status] AS Request_status
, r.[submit_time]
, r.[start_time]
, r.[end_compile_time]
, r.[end_time]
, DATEDIFF(ms,r.[submit_time],r.[start_time]) AS Request_queue_time_ms
, DATEDIFF(ms,r.[start_time],r.[end_compile_time]) AS Request_compile_time_ms
, DATEDIFF(ms,r.[end_compile_time],r.[end_time]) AS Request_execution_time_ms
, r.[total_elapsed_time]
FROM sys.dm_pdw_waits w
JOIN sys.dm_pdw_exec_sessions s ON w.[session_id] = s.[session_id]
JOIN sys.dm_pdw_exec_requests r ON w.[request_id] = r.[request_id]
WHERE w.[session_id] <> SESSION_ID();
La sys.dm_pdw_resource_waits DMV mostra le informazioni di attesa per una determinata query. Il tempo di attesa delle risorse misura il tempo in cui si attende che le risorse siano disponibili. Il tempo di attesa del segnale è il tempo necessario per i server SQL sottostanti per pianificare la query nella CPU.
SELECT [session_id]
, [type]
, [object_type]
, [object_name]
, [request_id]
, [request_time]
, [acquire_time]
, DATEDIFF(ms,[request_time],[acquire_time]) AS acquire_duration_ms
, [concurrency_slots_used] AS concurrency_slots_reserved
, [resource_class]
, [wait_id] AS queue_position
FROM sys.dm_pdw_resource_waits
WHERE [session_id] <> SESSION_ID();
È anche possibile usare la sys.dm_pdw_resource_waits DMV per calcolare il numero di slot di concorrenza concessi.
SELECT SUM([concurrency_slots_used]) as total_granted_slots
FROM sys.[dm_pdw_resource_waits]
WHERE [state] = 'Granted'
AND [resource_class] is not null
AND [session_id] <> session_id();
La sys.dm_pdw_wait_stats DMV può essere usata per l'analisi cronologica delle attese.
SELECT w.[pdw_node_id]
, w.[wait_name]
, w.[max_wait_time]
, w.[request_count]
, w.[signal_time]
, w.[completed_count]
, w.[wait_time]
FROM sys.dm_pdw_wait_stats w;
Passaggi successivi
Per altre informazioni sulla gestione degli utenti e della sicurezza del database, vedere Proteggere un pool SQL dedicato (in precedenza SQL Data Warehouse). Per altre informazioni su come le classi di risorse di dimensioni maggiori possono migliorare la qualità degli indici columnstore cluster, vedere Ricompilazione degli indici per migliorare la qualità dei segmenti.