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.