Sdílet prostřednictvím


Analyzujte své pracovní zatížení 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ší dynamická zobrazení správy (DMV)

Můžete použít dynamické zobrazení správy (DMV) sys.dm_pdw_exec_requests k identifikaci dotazů, které čekají ve frontě souběžného zpracování. Dotazy, které čekají na slot souběžnosti, mají stav pozastavené.

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 rámec 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 rámce pro sloty 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, ostatní se zařadí do fronty. Obecně doporučujeme minimální dobu mezi po sobě jdoucími snímky o 10 minutách.

sys.dm_pdw_waits DMV lze použít ke zjištění, na které prostředky 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();

sys.dm_pdw_resource_waits DMV 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 čas, který je potřeba k tomu, aby podkladové SQL servery naplánovaly 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 DMV k vypočítání, 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();

sys.dm_pdw_wait_stats DMV lze použít k analýze historických trendů č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ů.