Azure Synapse Analytics'te ayrılmış SQL havuzu için iş yükünüzü analiz etme
Azure Synapse Analytics'te ayrılmış SQL havuzu iş yükünüzü analiz etme teknikleri.
Kaynak Sınıfları
Ayrılmış SQL havuzu, sorgulara sistem kaynakları atamak için kaynak sınıfları sağlar. Kaynak sınıfları hakkında daha fazla bilgi için bkz . Kaynak sınıfları ve iş yükü yönetimi. Sorguya atanan kaynak sınıfının şu anda kullanılabilir olandan daha fazla kaynağa ihtiyacı varsa sorgular bekler.
Kuyruğa alınan sorgu algılama ve diğer DMV'ler
Eşzamanlılık kuyruğunda sys.dm_pdw_exec_requests
bekleyen sorguları belirlemek için DMV'yi kullanabilirsiniz. Eşzamanlılık yuvası bekleyen sorguların durumu askıya alındı.
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
;
İş yükü yönetimi rolleri ile sys.database_principals
görüntülenebilir.
SELECT ro.[name] AS [db_role_name]
FROM sys.database_principals ro
WHERE ro.[type_desc] = 'DATABASE_ROLE'
AND ro.[is_fixed_role] = 0
;
Aşağıdaki sorgu, her kullanıcının hangi role atandığı gösterir.
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')
;
Ayrılmış SQL havuzu aşağıdaki bekleme türlerine sahiptir:
- LocalQueriesConcurrencyResourceType: Eşzamanlılık yuvası çerçevesinin dışında duran sorgular. DMV sorguları ve gibi
SELECT @@VERSION
sistem işlevleri, yerel sorgulara örnek olarak verilebilir. - UserConcurrencyResourceType: Eşzamanlılık yuvası çerçevesi içinde yer alan sorgular. Son kullanıcı tablolarındaki sorgular, bu kaynak türünü kullanacak örnekleri temsil eder.
- DmsConcurrencyResourceType: Veri taşıma işlemlerinden kaynaklanan beklemeler.
- BackupConcurrencyResourceType: Bu bekleme, veritabanının yedeklendiğini gösterir. Bu kaynak türü için en yüksek değer 1'dir. Aynı anda birden çok yedekleme istendiyse, diğerleri sıraya alınır. Genel olarak, 10 dakikalık ardışık anlık görüntüler arasında en az bir süre öneririz.
DMV sys.dm_pdw_waits
, isteğin hangi kaynakları beklediğini görmek için kullanılabilir.
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, belirli bir sorgunun bekleme bilgilerini gösterir. Kaynak bekleme süresi, kaynakların sağlanmasını bekleyen süreyi ölçer. Sinyal bekleme süresi, temel sql sunucularının sorguyu CPU'ya zamanlaması için geçen süredir.
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();
DMV'yi sys.dm_pdw_resource_waits
kaç eşzamanlılık yuvası verildiğini hesaplamak için de kullanabilirsiniz.
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, beklemelerin geçmiş eğilim analizi için kullanılabilir.
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;
Sonraki adımlar
Veritabanı kullanıcılarını ve güvenliğini yönetme hakkında daha fazla bilgi için bkz . Ayrılmış SQL havuzunun (eski adı SQL DW) güvenliğini sağlama. Daha büyük kaynak sınıflarının kümelenmiş columnstore dizin kalitesini nasıl geliştirebileceği hakkında daha fazla bilgi için bkz . Segment kalitesini geliştirmek için dizinleri yeniden oluşturma.