Analizowanie obciążenia dla dedykowanej puli SQL w usłudze Azure Synapse Analytics
Techniki analizowania obciążenia dedykowanej puli SQL w usłudze Azure Synapse Analytics.
Klasy zasobów
Dedykowana pula SQL udostępnia klasy zasobów do przypisywania zasobów systemowych do zapytań. Aby uzyskać więcej informacji na temat klas zasobów, zobacz Klasy zasobów i zarządzanie obciążeniami. Zapytania będą czekać, jeśli klasa zasobów przypisana do zapytania wymaga więcej zasobów niż są obecnie dostępne.
Wykrywanie zapytań w kolejce i inne dynamiczne widoki zarządzania
Dynamiczny widok zarządzania umożliwia sys.dm_pdw_exec_requests
identyfikowanie zapytań oczekujących w kolejce współbieżności. Zapytania oczekujące na miejsce współbieżności mają stan wstrzymania.
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 zarządzania obciążeniami można wyświetlić za pomocą sys.database_principals
polecenia .
SELECT ro.[name] AS [db_role_name]
FROM sys.database_principals ro
WHERE ro.[type_desc] = 'DATABASE_ROLE'
AND ro.[is_fixed_role] = 0
;
Poniższe zapytanie pokazuje, do której roli przypisany jest każdy użytkownik.
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')
;
Dedykowana pula SQL ma następujące typy oczekiwania:
- LocalQueriesConcurrencyResourceType: zapytania, które znajdują się poza strukturą miejsca współbieżności. Zapytania DMV i funkcje systemowe, takie jak
SELECT @@VERSION
przykłady zapytań lokalnych. - UserConcurrencyResourceType: zapytania, które znajdują się wewnątrz struktury miejsca współbieżności. Zapytania względem tabel użytkowników końcowych reprezentują przykłady, które będą używać tego typu zasobu.
- DmsConcurrencyResourceType: oczekiwania wynikające z operacji przenoszenia danych.
- BackupConcurrencyResourceType: to oczekiwanie wskazuje, że tworzona jest kopia zapasowa bazy danych. Maksymalna wartość tego typu zasobu to 1. Jeśli w tym samym czasie zażądano wielu kopii zapasowych, inne kolejki. Ogólnie rzecz biorąc, zalecamy minimalny czas między kolejnymi migawkami wynoszącymi 10 minut.
Dynamiczny sys.dm_pdw_waits
widok zarządzania może służyć do sprawdzenia, które zasoby oczekuje żądanie.
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();
Widok sys.dm_pdw_resource_waits
DMV wyświetla informacje o oczekiwaniu dla danego zapytania. Czas oczekiwania na zasoby mierzy czas oczekiwania na dostarczone zasoby. Czas oczekiwania sygnału to czas potrzebny na zaplanowanie zapytania na procesor CPU przez bazowe serwery SQL.
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();
Możesz również użyć sys.dm_pdw_resource_waits
widoku DMV, aby obliczyć, ile miejsc współbieżności udzielono.
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();
Dynamiczny sys.dm_pdw_wait_stats
widok zarządzania może służyć do historycznej analizy trendów oczekiwania.
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;
Następne kroki
Aby uzyskać więcej informacji na temat zarządzania użytkownikami i zabezpieczeniami bazy danych, zobacz Zabezpieczanie dedykowanej puli SQL (dawniej SQL DW). Aby uzyskać więcej informacji o tym, jak większe klasy zasobów mogą poprawić jakość indeksu magazynu kolumn klastra, zobacz Ponowne kompilowanie indeksów w celu poprawy jakości segmentów.