Analýza úloh pro vyhrazený fond SQL ve službě Azure Synapse Analytics
Techniky analýzy úloh vyhrazeného fondu SQL ve službě Azure Synapse Analytics
Třídy prostředků
Vyhrazený fond SQL poskytuje třídy prostředků pro přiřazení systémových prostředků k dotazům. Další informace o třídách prostředků najdete v tématu Třídy prostředků a správa úloh. Dotazy budou čekat, pokud třída prostředků přiřazená k dotazu potřebuje více prostředků, než je aktuálně k dispozici.
Detekce dotazů ve frontě a další zobrazení dynamické správy
Zobrazení dynamické správy můžete použít sys.dm_pdw_exec_requests
k identifikaci dotazů, které čekají ve frontě souběžnosti. Dotazy čekající na slot souběžnosti mají stav pozastaveného.
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
;
Role správy úloh lze zobrazit pomocí 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
;
Následující dotaz ukazuje, ke které roli má každý uživatel přiřazenou.
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')
;
Vyhrazený fond SQL má následující typy čekání:
- LocalQueriesConcurrencyResourceType: Dotazy, které se nacházejí mimo architekturu slotu souběžnosti. Dotazy DMV a systémové funkce, jako
SELECT @@VERSION
jsou příklady místních dotazů. - UserConcurrencyResourceType: Dotazy, které se nacházejí v rámci rozhraní slotu souběžnosti. Dotazy na tabulky koncových uživatelů představují příklady, které by používaly tento typ prostředku.
- DmsConcurrencyResourceType: Čekání vyplývající z operací přesunu dat.
- BackupConcurrencyResourceType: Toto čekání indikuje, že se zálohuje databáze. Maximální hodnota tohoto typu prostředku je 1. Pokud bylo současně požadováno více záloh, fronta ostatních. Obecně doporučujeme minimální dobu mezi po sobě jdoucími snímky o 10 minutách.
Zobrazení sys.dm_pdw_waits
dynamické správy se dá použít k zobrazení prostředků, na které požadavek čeká.
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();
Zobrazení sys.dm_pdw_resource_waits
dynamické správy zobrazuje informace o čekání pro daný dotaz. Doba čekání na prostředek měří dobu čekání na poskytnutí prostředků. Doba čekání signálu je doba, která trvá, než podkladové sql servery naplánuje dotaz na procesor.
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();
Můžete také použít sys.dm_pdw_resource_waits
zobrazení dynamické správy, abyste vypočítali, kolik slotů souběžnosti bylo uděleno.
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();
Zobrazení sys.dm_pdw_wait_stats
dynamické správy lze použít k analýze historického trendu čekání.
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;
Další kroky
Další informace o správě uživatelů databáze a zabezpečení naleznete v tématu Zabezpečení vyhrazeného fondu SQL (dříve SQL DW). Další informace o tom, jak větší třídy prostředků mohou zlepšit kvalitu clusterovaného indexu columnstore, naleznete v tématu Opětovné sestavení indexů za účelem zlepšení kvality segmentů.