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

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.