تصنيف حمل العمل لتجمع SQL مخصص في Azure Synapse Analytics
تقنيات لتحليل حمل عمل تجمع SQL المخصص في Azure Synapse Analytics.
فئات الموارد
يوفر تجمع 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 الأساسية لجدولة الاستعلام على وحدة المعالجة المركزية.
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). لمزيد من المعلومات حول كيفية تحسين فئات الموارد الأكبر جودة فهرس تخزين الأعمدة المجمعة، راجع إعادة إنشاء الفهارس لتحسين جودة المقطع.