Share via


Uw workload analyseren voor een toegewezen SQL-pool in Azure Synapse Analytics

Technieken voor het analyseren van de workload van uw toegewezen SQL-pool in Azure Synapse Analytics.

Resourceklassen

Toegewezen SQL-pool biedt resourceklassen om systeemresources toe te wijzen aan query's. Zie Resourceklassen en workloadbeheer voor meer informatie over resourceklassen. Query's wachten als de resourceklasse die is toegewezen aan een query meer resources nodig heeft dan momenteel beschikbaar is.

Querydetectie in wachtrij en andere DMV's

U kunt de sys.dm_pdw_exec_requests DMV gebruiken om query's te identificeren die in een gelijktijdigheidswachtrij wachten. Query's die wachten op een gelijktijdigheidssite, hebben de status Onderbroken.

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
;

Workloadbeheerrollen kunnen worden weergegeven met 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
;

In de volgende query ziet u aan welke rol elke gebruiker is toegewezen.

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')
;

Toegewezen SQL-pool heeft de volgende wachttypen:

  • LocalQueriesConcurrencyResourceType: Query's die zich buiten het gelijktijdigheidssiteframework bevinden. DMV-query's en systeemfuncties, zoals SELECT @@VERSION voorbeelden van lokale query's.
  • UserConcurrencyResourceType: query's die zich in het gelijktijdigheidssiteframework bevinden. Query's op tabellen van eindgebruikers vertegenwoordigen voorbeelden die dit resourcetype zouden gebruiken.
  • DmsConcurrencyResourceType: Wachttijden als gevolg van bewerkingen voor gegevensverplaatsing.
  • BackupConcurrencyResourceType: Deze wachttijd geeft aan dat er een back-up van een database wordt gemaakt. De maximumwaarde voor dit resourcetype is 1. Als er tegelijkertijd meerdere back-ups zijn aangevraagd, worden de andere wachtrijen gebruikt. Over het algemeen raden we een minimale tijd aan tussen opeenvolgende momentopnamen van 10 minuten.

De sys.dm_pdw_waits DMV kan worden gebruikt om te zien op welke resources een aanvraag wacht.

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();

De sys.dm_pdw_resource_waits DMV toont de wachtinformatie voor een bepaalde query. De wachttijd van resources meet de tijd die wacht tot resources moeten worden opgegeven. Signaalwachttijd is de tijd die nodig is voordat de onderliggende SQL-servers de query op de CPU plannen.

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();

U kunt ook de sys.dm_pdw_resource_waits DMV gebruiken om te berekenen hoeveel gelijktijdigheidssites zijn verleend.

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();

De sys.dm_pdw_wait_stats DMV kan worden gebruikt voor analyse van historische trend van wachttijden.

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;

Volgende stappen

Zie Een toegewezen SQL-pool (voorheen SQL DW) beveiligen voor meer informatie over het beheren van databasegebruikers en beveiliging. Zie Indexen herbouwen om de segmentkwaliteit te verbeteren voor meer informatie over hoe grotere resourceklassen de kwaliteit van de geclusterde columnstore-index kunnen verbeteren.