分析 Azure Synapse Analytics 中專用 SQL 集區的工作負載
在 Azure Synapse Analytics 中分析專用 SQL 集區工作負載的技術。
資源類別
專用 SQL 集區提供資源類別,以將系統資源指派給查詢。 如需資源類別的詳細資訊,請參閱 資源類別和工作負載管理。 如果指派給查詢的資源類別需要比目前可用的資源還多,查詢將會等候。
佇列查詢偵測和其他 DMV
您可以使用 sys.dm_pdw_exec_requests
DMV 來識別在並行佇列中等候的查詢。 等候並行位置的查詢狀態為 暫止。
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
;
您可以使用 來檢視 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
;
下列查詢顯示每位用戶獲指派的角色。
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')
;
專用 SQL 集區具有下列等候類型:
- LocalQueriesConcurrencyResourceType:位於並行位置架構外部的查詢。 DMV 查詢和系統功能,例如
SELECT @@VERSION
本機查詢的範例。 - UserConcurrencyResourceType:位於並行位置架構內的查詢。 針對用戶數據表的查詢代表會使用此資源類型的範例。
- DmsConcurrencyResourceType:數據移動作業所產生的等候。
- BackupConcurrencyResourceType:此等候表示正在備份資料庫。 此資源類型的最大值為 1。 如果同時要求多個備份,則其他備份會排入佇列。 一般而言,我們建議連續快照集 10 分鐘之間的最短時間。
sys.dm_pdw_waits
DMV 可用來查看要求正在等候的資源。
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 會顯示指定查詢的等候資訊。 資源等候時間會測量等候資源提供的時間。 訊號等候時間是基礎 SQL 伺服器排程查詢到 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();
您也可以使用 sys.dm_pdw_resource_waits
DMV 計算已授與多少並行位置。
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 可用於等候的歷史趨勢分析。
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;
下一步
如需管理資料庫使用者和安全性的詳細資訊,請參閱保護專用 SQL 集區(先前稱為 SQL DW)。 如需較大資源類別如何改善叢集數據行存放區索引品質的詳細資訊,請參閱 重建索引以改善區段品質。