Analisis 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 tersedia saat ini.

Deteksi kueri antrean dan DMV lainnya

Anda dapat menggunakan sys.dm_pdw_exec_requests DMV untuk mengidentifikasi kueri yang menunggu dalam antrean konkurensi. 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 yang ditetapkan untuk 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 tipe tunggu berikut:

  • LocalQueriesConcurrencyResourceType: Kueri yang berada di luar framework slot konkurensi. Kueri DMV dan fungsi sistem seperti SELECT @@VERSION adalah contoh kueri lokal.
  • UserConcurrencyResourceType: Kueri yang berada di dalam framework slot konkurensi. Kueri terhadap tabel pengguna akhir mewakili contoh yang akan menggunakan jenis sumber daya ini.
  • DmsConcurrencyResourceType: Menunggu akibat operasi pemindahan data.
  • BackupConcurrencyResourceType: Penantian ini menunjukkan bahwa database sedang dicadangkan. Nilai maksimum untuk jenis sumber daya ini adalah 1. Jika beberapa cadangan telah diminta pada saat yang sama, yang lain mengantri. Secara umum, kami merekomendasikan waktu minimum antara snapshot berturut-turut selama 10 menit.

sys.dm_pdw_waits DMV dapat digunakan untuk melihat sumber daya mana yang menunggu 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 menampilkan informasi tunggu untuk kueri tertentu. Waktu tunggu sumber daya, mengukur waktu tunggu sumber daya yang akan disediakan. Waktu tunggu sinyal adalah waktu yang diperlukan server SQL yang mendasarinya 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 dari penantian.

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 basis data, lihat Mengamankan kumpulan SQL khusus (sebelumnya SQL DW). Untuk informasi lebih lanjut tentang bagaimana kelas sumber daya yang lebih besar dapat meningkatkan kualitas indeks penyimpan kolom berkluster, lihat Membangun kembali indeks untuk meningkatkan kualitas segmen.