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