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ů.