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.