Bagikan melalui


Menganalisis beban kerja Anda untuk kumpulan SQL khusus di Azure Synapse Analytics

Teknik untuk menganalisis beban kerja kumpulan SQL khusus Anda di Azure Synapse Analytics.

Kelas Sumber Daya

Kumpulan SQL khusus menyediakan kelas sumber daya untuk menetapkan sumber daya sistem ke kueri. Untuk informasi selengkapnya tentang kelas sumber daya, lihat Kelas sumber daya & manajemen beban kerja. Kueri akan menunggu jika kelas sumber daya yang ditetapkan ke kueri membutuhkan lebih banyak sumber daya daripada yang saat ini tersedia.

Deteksi kueri yang diantre dan DMV lainnya

Anda dapat menggunakan sys.dm_pdw_exec_requests DMV untuk mengidentifikasi kueri yang menunggu dalam antrian keserentakan. Kueri yang menunggu slot konkurensi memiliki status ditangguhkan.

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
;

Peran manajemen beban kerja dapat dilihat dengan 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
;

Kueri berikut menunjukkan peran mana yang ditetapkan setiap pengguna.

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

Kumpulan SQL khusus memiliki jenis tunggu berikut:

  • LocalQueriesConcurrencyResourceType: Kueri yang berada di luar sistem slot konkurensi. Kueri DMV dan fungsi sistem seperti SELECT @@VERSION contoh kueri lokal.
  • UserConcurrencyResourceType: Kueri yang berada di dalam kerangka kerja slot konkurensi. Kueri terhadap tabel pengguna akhir mewakili contoh yang akan menggunakan jenis sumber daya ini.
  • DmsConcurrencyResourceType: Menunggu hasil dari operasi pergerakan data.
  • BackupConcurrencyResourceType: Penantian ini menandakan bahwa database sedang dicadangkan. Nilai maksimum untuk jenis sumber daya ini adalah 1. Jika beberapa cadangan diminta pada saat yang sama, yang lainnya mengantre. Secara umum, kami merekomendasikan waktu minimum antara rekam jepret berturut-turut 10 menit.

sys.dm_pdw_waits DMV dapat digunakan untuk melihat sumber daya mana yang sedang ditunggu oleh permintaan.

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 memperlihatkan informasi tunggu untuk kueri tertentu. Waktu tunggu sumber daya mengukur waktu menunggu sumber daya disediakan. Waktu tunggu sinyal adalah waktu yang diperlukan server SQL yang mendasar untuk menjadwalkan kueri ke CPU.

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

Anda juga dapat menggunakan sys.dm_pdw_resource_waits DMV untuk menghitung berapa banyak slot konkurensi yang telah diberikan.

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 dapat digunakan untuk analisis tren historis waktu tunggu.

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;

Langkah berikutnya

Untuk informasi selengkapnya tentang mengelola pengguna dan keamanan database, lihat Mengamankan kumpulan SQL khusus (sebelumnya SQL DW). Untuk informasi selengkapnya tentang bagaimana kelas sumber daya yang lebih besar dapat meningkatkan kualitas indeks penyimpan kolom berkluster, lihat Membangun ulang indeks untuk meningkatkan kualitas segmen.