آموزش Degree of Parallelism Feedback در SQL Server | مثال، خطا و Performance

آموزش جامع Degree of Parallelism Feedback در SQL Server؛ بازخورد درجه موازی‌سازی

توسط admin | گروه SQL Server | 1405/05/06

نظرات 0

آموزش جامع Degree of Parallelism Feedback در SQL Server؛ بازخورد درجه موازی‌سازی

مسئله‌ای که Degree of Parallelism Feedback حل می‌کند

یک Query ثابت در برابر حجم داده، توزیع پارامتر و وضعیت Cache همیشه رفتار یکسانی ندارد. Degree of Parallelism Feedback برای همین نوسان ساخته شده و درجه موازی‌سازی را با مشاهده کارایی Query تنظیم می‌کند.

این مقاله از سطح مقدماتی آغاز می‌کند و پیش‌نیاز SQL Server 2022، Compatibility Level 160، منطق DOP Feedback و CPU Time، ده آزمایش عملی و روش تصمیم‌گیری برای Production را پوشش می‌دهد.

مثال‌ها را در پایگاه آزمایشی اجرا کنید؛ برای مشاهده نتیجه به Actual Execution Plan، مجوز ساخت Object و ترجیحاً Query Store نیاز دارید.

بازگشت به راهنمای جامع Intelligent Query Processing

دسترسی سریع

  1. تعریف و جایگاه
  2. نحو و سازگاری
  3. ده مثال عملی
  4. Performance
  5. سؤالات متداول

تعریف و جایگاه موضوع

Degree of Parallelism Feedback یا بازخورد درجه موازی‌سازی در خانواده Intelligent Query Processing قرار می‌گیرد. درجه موازی‌سازی را با مشاهده کارایی Query تنظیم می‌کند. سیگنال‌های اصلی آن DOP Feedback, Parallelism, CPU Time, Elapsed Time هستند و نتیجه باید در Plan یا Runtime Stats قابل مشاهده باشد.

سناریوی مناسب، گزارش‌های موازی روی سرور پرتراکنش است. این قابلیت یک درمان عمومی برای Schema نامناسب، Statistics منقضی یا Predicate غیرSARGable نیست و باید بعد از تشخیص ریشه مسئله انتخاب شود.

نقشه مفهومی Degree of Parallelism Feedbackارتباط DOP Feedback، Parallelism، CPU Time و CXPACKET در Degree of Parallelism Feedback.Degree of Parallelism FeedbackConcept Map + Readiness BarsDOP FeedbackParallelismCPU TimeElapsed TimeCXPACKETQuery StoreDOP FeedbackParallelismCPU TimeElapsed TimeCXPACKET

این نقشه جایگاه Degree of Parallelism Feedback را با محورهای DOP Feedback، CPU Time و CXPACKET نشان می‌دهد.

نحو، تنظیمات و نوع خروجی

تنظیم پایه

ALTER DATABASE SCOPED CONFIGURATION SET DOP_FEEDBACK = ON;

نسخه، پارامتر و رفتار ویژه

مولفهمقدارتفسیر
نسخهSQL Server 2022نسخه پایه قابلیت
Compatibility Level160شرط فعال‌شدن Optimizer
ورودیCPU Timeسیگنال تصمیم
خروجیPlan یا Runtime behaviorنوع داده Query تغییر نمی‌کند
NULLوابسته به Predicateآزمون مستقل لازم است

Degree of Parallelism Feedback Return Type مستقلی به برنامه برنمی‌گرداند؛ نتیجه آن در انتخاب Operator، Variant، Grant، DOP یا زمان Compile دیده می‌شود. بنابراین خروجی SELECT همان نوع داده عبارت اصلی باقی می‌ماند.

اجزای اصلی و منطق اجرا

1. نقش DOP Feedback

در زنجیره تصمیم Degree of Parallelism Feedback، مؤلفه DOP Feedback باید همراه با Actual Rows، هزینه Operatorهای مجاور و تکرار اجرا تحلیل شود. مشاهده نام یک ویژگی بدون تغییر قابل اندازه‌گیری، اثبات موفقیت نیست.

2. نقش Parallelism

در زنجیره تصمیم Degree of Parallelism Feedback، مؤلفه Parallelism باید همراه با Actual Rows، هزینه Operatorهای مجاور و تکرار اجرا تحلیل شود. مشاهده نام یک ویژگی بدون تغییر قابل اندازه‌گیری، اثبات موفقیت نیست.

3. نقش CPU Time

در زنجیره تصمیم Degree of Parallelism Feedback، مؤلفه CPU Time باید همراه با Actual Rows، هزینه Operatorهای مجاور و تکرار اجرا تحلیل شود. مشاهده نام یک ویژگی بدون تغییر قابل اندازه‌گیری، اثبات موفقیت نیست.

4. نقش Elapsed Time

در زنجیره تصمیم Degree of Parallelism Feedback، مؤلفه Elapsed Time باید همراه با Actual Rows، هزینه Operatorهای مجاور و تکرار اجرا تحلیل شود. مشاهده نام یک ویژگی بدون تغییر قابل اندازه‌گیری، اثبات موفقیت نیست.

جریان اجرای Degree of Parallelism Feedbackمسیر ورودی تا خروجی Degree of Parallelism Feedback با CPU Time و CXPACKET.Degree of Parallelism FeedbackExecution Flow + Runtime MetricsDegree of Parallelism FeedbackDOP FeedbackCPU TimeCXPACKETQuery Store / OutputCompile: 62%Execute: 71%Observe: 80%Adapt: 89%

این جریان، مسیر Query از DOP Feedback تا مشاهده CXPACKET را برای Degree of Parallelism Feedback قابل پیگیری می‌کند.

مثال‌های عملی از ساده تا پیشرفته

مثال 1: بررسی سطح سازگاری

پیش از تحلیل Degree of Parallelism Feedback سطح سازگاری را ثبت می‌کنیم.

SELECT DB_NAME() DatabaseName,compatibility_level FROM sys.databases WHERE name=DB_NAME();
خروجی یا شاخصنمونه نتیجه
DatabaseCurrent
Compatibility160

نکته کاربردی: سطح هدف این مقاله 160 است.

مثال 2: فعال‌سازی کنترل‌شده

تنظیم مرتبط با Degree of Parallelism Feedback در محیط آزمایشی فعال می‌شود.

ALTER DATABASE SCOPED CONFIGURATION SET DOP_FEEDBACK = ON;
SELECT name,value FROM sys.database_scoped_configurations ORDER BY name;
خروجی یا شاخصنمونه نتیجه
ActionEnable
ScopeDatabase

نکته کاربردی: Baseline پیش از تغییر را نگه دارید.

مثال 3: ساخت داده نمونه

داده‌ای متناسب با DOP Feedback و Parallelism ساخته می‌شود.

DROP TABLE IF EXISTS dbo.IQP_DEGREE_OF_PARALLEL;
CREATE TABLE dbo.IQP_DEGREE_OF_PARALLEL(ID bigint IDENTITY PRIMARY KEY,GroupID int NOT NULL,Amount decimal(12,2) NOT NULL,Notes nvarchar(150) NULL);
INSERT dbo.IQP_DEGREE_OF_PARALLEL(GroupID,Amount,Notes)
SELECT TOP (50000) ABS(CHECKSUM(NEWID()))%200,1+ABS(CHECKSUM(NEWID()))%20000,N'داده '+CONVERT(nvarchar(20),ROW_NUMBER() OVER(ORDER BY (SELECT NULL)))
FROM sys.all_objects a CROSS JOIN sys.all_objects b;
خروجی یا شاخصنمونه نتیجه
ObjectIQP_DEGREE_OF_PARA
Purposeبازخورد درجه موازی‌سازی

نکته کاربردی: حجم و Skew را شبیه Production تنظیم کنید.

مثال 4: اجرای سناریوی پایه

Query پایه برای مشاهده CPU Time اجرا می‌شود.

DECLARE @GroupID int=7; SELECT GroupID,COUNT_BIG(*) Cnt,SUM(Amount) TotalAmount,MAX(Notes) SampleNote FROM dbo.IQP_DEGREE_OF_PARALLEL WHERE GroupID=@GroupID GROUP BY GroupID;
خروجی یا شاخصنمونه نتیجه
SignalCPU Time
ExpectedInspect actual plan

نکته کاربردی: Actual Plan را ذخیره کنید.

مثال 5: ثبت XML Plan

ویژگی‌های Elapsed Time و CXPACKET در Plan بررسی می‌شوند.

SET STATISTICS XML ON;
DECLARE @GroupID int=7; SELECT GroupID,COUNT_BIG(*) Cnt,SUM(Amount) TotalAmount,MAX(Notes) SampleNote FROM dbo.IQP_DEGREE_OF_PARALLEL WHERE GroupID=@GroupID GROUP BY GroupID;
SET STATISTICS XML OFF;
خروجی یا شاخصنمونه نتیجه
ArtifactActual XML Plan
InspectCXPACKET

نکته کاربردی: Estimated Plan برای Feedback کافی نیست.

مثال 6: تکرار اجرا

برای شکل‌گیری تاریخچه Degree of Parallelism Feedback چند اجرای متوالی انجام می‌شود.

DECLARE @i int=1; WHILE @i<=6 BEGIN
DECLARE @GroupID int=7; SELECT GroupID,COUNT_BIG(*) Cnt,SUM(Amount) TotalAmount,MAX(Notes) SampleNote FROM dbo.IQP_DEGREE_OF_PARALLEL WHERE GroupID=@GroupID GROUP BY GroupID;
SET @i+=1; END;
خروجی یا شاخصنمونه نتیجه
Executions6
ObservationRuntime evolution

نکته کاربردی: بین اجراها Cache را بی‌دلیل پاک نکنید.

مثال 7: تحلیل Query Store

Runtime Stats و Planهای Degree of Parallelism Feedback از Query Store خوانده می‌شوند.

ALTER DATABASE CURRENT SET QUERY_STORE=ON;
SELECT TOP (20) q.query_id,p.plan_id,p.is_forced_plan,rs.count_executions,rs.avg_duration,rs.avg_cpu_time,rs.avg_logical_io_reads
FROM sys.query_store_query_text qt JOIN sys.query_store_query q ON q.query_text_id=qt.query_text_id
JOIN sys.query_store_plan p ON p.query_id=q.query_id JOIN sys.query_store_runtime_stats rs ON rs.plan_id=p.plan_id
WHERE qt.query_sql_text LIKE N'%IQP_DEGREE_OF_PA%' ORDER BY rs.last_execution_time DESC;
خروجی یا شاخصنمونه نتیجه
RepositoryQuery Store
MetricsCPU, IO, Duration

نکته کاربردی: بازه‌های زمانی همسان را مقایسه کنید.

مثال 8: آزمون NULL و حالت مرزی

شاخه کم‌انتخاب یا NULL برای Degree of Parallelism Feedback آزمایش می‌شود.

DECLARE @GroupID int=NULL; SELECT GroupID,SUM(Amount) TotalAmount FROM dbo.IQP_DEGREE_OF_PARALLEL WHERE GroupID=@GroupID OR @GroupID IS NULL GROUP BY GroupID;
خروجی یا شاخصنمونه نتیجه
CaseNULL / Edge
ExpectedNo error

نکته کاربردی: حالت مرزی را در Regression Test نگه دارید.

مثال 9: مقایسه A/B

اثر Degree of Parallelism Feedback با خاموش و روشن‌کردن کنترل‌شده مقایسه می‌شود.

ALTER DATABASE SCOPED CONFIGURATION SET DOP_FEEDBACK = OFF;
DECLARE @GroupID int=7; SELECT GroupID,COUNT_BIG(*) Cnt,SUM(Amount) TotalAmount,MAX(Notes) SampleNote FROM dbo.IQP_DEGREE_OF_PARALLEL WHERE GroupID=@GroupID GROUP BY GroupID;
ALTER DATABASE SCOPED CONFIGURATION SET DOP_FEEDBACK = ON;
خروجی یا شاخصنمونه نتیجه
AFeature OFF
BFeature ON

نکته کاربردی: در Production تغییر سراسری بدون Change Plan انجام ندهید.

مثال 10: پایش معیار پذیرش

CPU، IO و Duration برای پذیرش Degree of Parallelism Feedback ثبت می‌شود.

SET STATISTICS IO ON; SET STATISTICS TIME ON;
DECLARE @GroupID int=7; SELECT GroupID,COUNT_BIG(*) Cnt,SUM(Amount) TotalAmount,MAX(Notes) SampleNote FROM dbo.IQP_DEGREE_OF_PARALLEL WHERE GroupID=@GroupID GROUP BY GroupID;
SET STATISTICS TIME OFF; SET STATISTICS IO OFF;
خروجی یا شاخصنمونه نتیجه
AcceptLower resource or stable plan
RollbackPrior config

نکته کاربردی: نتیجه را با SLA و Throughput کل سرور بسنجید.

کاربردهای واقعی در پروژه

کاربرد شاخص Degree of Parallelism Feedback در گزارش‌های موازی روی سرور پرتراکنش دیده می‌شود. تیم باید Queryهای کاندید را بر اساس سهم CPU، Duration و Logical Reads اولویت‌بندی کند و از تغییر همه Queryها یا همه تنظیمات به صورت هم‌زمان پرهیز کند.

در پروژه سازمانی، خروجی مطلوب فقط کاهش زمان یک اجرا نیست. ثبات Plan در ساعات پرترافیک، Throughput کل سامانه، Tail Latency، فشار tempdb و امکان Rollback نیز بخشی از معیار پذیرش هستند.

هشدار مهم نسخه و Eligibility

نام Degree of Parallelism Feedback در نسخه SQL Server 2022 به معنی استفاده قطعی آن در هر Query نیست. Compatibility Level 160، Build، تنظیم Scoped، شکل Query و Eligibility هم‌زمان تعیین‌کننده‌اند.

پیش از تغییر Production، Cumulative Update، وضعیت Query Store و Hintهای موجود را ثبت کنید. Hint ثابت یا پاک‌سازی مکرر Cache ممکن است رفتار تطبیقی را محدود کند.

اشتباهات رایج و روش اصلاح

اشتباهپیامداصلاح عملی
قضاوت با یک اجرانتیجه Cache-sensitiveچند اجرای کنترل‌شده
داده یکنواختپنهان‌شدن رفتار تطبیقیSkew و NULL واقعی
پاک‌کردن دائم Cacheحذف Feedback یا Variantسیاست Cache ثابت
تمرکز فقط بر Durationپنهان‌شدن CPU و IOثبت چند معیار
تغییر سراسریریسک RegressionPilot و Rollback

Performance Considerations

برای Degree of Parallelism Feedback، Plan را از نظر DOP Feedback، CPU Time و CXPACKET با Baseline مقایسه کنید. Estimated Rows و Actual Rows، CPU Time، Elapsed Time و Logical Reads باید هم‌زمان خوانده شوند.

  • تغییر DOP Feedback را در Actual Plan ثبت کنید.
  • اثر CPU Time را روی انتخاب Plan یا Runtime بسنجید.
  • Warm Cache و Cold Cache را جداگانه آزمایش کنید.
  • Tail Latency و Throughput را کنار میانگین زمان پاسخ نگه دارید.
  • Query Store را از نظر فضای مصرفی و Read Write بودن پایش کنید.

Best Practices

  1. Query کاندید را با شواهد انتخاب کنید.
  2. نسخه، Build و تنظیمات را در Change Record ثبت کنید.
  3. داده تست را از نظر حجم، Skew و NULL شبیه Production بسازید.
  4. A/B Test را با سیاست Cache یکسان انجام دهید.
  5. معیار توقف و Rollback Plan را پیش از انتشار تصویب کنید.
  6. پس از ارتقا یا تغییر Index، نتیجه را دوباره بررسی کنید.
پنل تصمیم و کارایی Degree of Parallelism Feedbackمقایسه خطا، Best Path، CPU و IO برای Degree of Parallelism Feedback.Degree of Parallelism FeedbackDecision Grid + Before/After BenchmarkSignalCPU TimeCommon ErrorParallelismBest PathCXPACKETOutput ShapeQuery StoreCPUIOLatency

این پنل، Best Path و خطای رایج Degree of Parallelism Feedback را کنار CPU، IO و Latency قرار می‌دهد.

مزایا، محدودیت‌ها و زمان نامناسب استفاده

جنبهتحلیل تصمیم
مزیتتصمیم آگاه‌تر از CPU Time
محدودیتوابستگی به نسخه و Eligibility
زمان نامناسبQuery کوچک یا مشکل طراحی Schema
مکملIndex، Statistics و Query SARGable

سؤالات متداول

Degree of Parallelism Feedback چه مسئله‌ای را حل می‌کند؟

بازخورد درجه موازی‌سازی درجه موازی‌سازی را با مشاهده کارایی Query تنظیم می‌کند و برای گزارش‌های موازی روی سرور پرتراکنش مناسب است.

چگونه استفاده واقعی Degree of Parallelism Feedback را تشخیص دهیم؟

Actual Plan، Query Store و شاخص‌های DOP Feedback و CXPACKET را پیش و پس از اجرا مقایسه کنید.

آیا Degree of Parallelism Feedback برای هر سامانه تجاری مناسب است؟

خیر؛ Baseline، SLA، توزیع داده و ریسک Regression باید پیش از استقرار بررسی شوند.

هزینه ارزیابی Degree of Parallelism Feedback چگونه برآورد می‌شود؟

تعداد Queryهای بحرانی، محیط تست، آمادگی Query Store و زمان Regression Test عوامل اصلی هستند.

تفاوت Degree of Parallelism Feedback با Tuning دستی چیست؟

این قابلیت بخشی از تصمیم Optimizer را تطبیقی می‌کند، اما جایگزین Index، Statistics و Query صحیح نیست.

برای اجرای پروژه Degree of Parallelism Feedback چه خدماتی لازم است؟

ممیزی Plan، طراحی Benchmark، اجرای A/B، آموزش تیم و سند Rollback خروجی‌های کاربردی پروژه هستند.

رایج‌ترین خطای Degree of Parallelism Feedback چیست؟

انتظار نتیجه بدون بررسی Compatibility Level 160، Eligibility Query و شواهد Actual Plan رایج‌ترین خطاست.

مهم‌ترین معیار Performance در Degree of Parallelism Feedback چیست؟

Duration، CPU، Logical Reads و تغییر CPU Time باید هم‌زمان تحلیل شوند.

Best Practice استقرار Degree of Parallelism Feedback چیست؟

Pilot محدود، داده شبیه Production، معیار پذیرش روشن و Monitoring پس از انتشار بهترین مسیر است.

Degree of Parallelism Feedback در کدام نسخه پشتیبانی می‌شود؟

مبنای این راهنما SQL Server 2022 و Compatibility Level 160 است؛ Build دقیق را نیز کنترل کنید.

سؤالات مصاحبه

  1. چه شواهدی اثر واقعی Degree of Parallelism Feedback را ثابت می‌کند؟
  2. تغییر CPU Time چگونه Plan را تحت تأثیر قرار می‌دهد؟
  3. چه زمانی خاموش‌کردن موقت Degree of Parallelism Feedback منطقی است؟
  4. چگونه بهبود یک Query را با Throughput کل سرور متعادل می‌کنید؟
  5. Rollback پس از Regression چگونه طراحی می‌شود؟

چک‌لیست نهایی

  1. Compatibility Level 160 بررسی شد.
  2. Baseline Plan، CPU، IO و Duration ثبت شد.
  3. Skew، NULL و حالت مرزی آزمایش شد.
  4. Query Store و فضای آن کنترل شد.
  5. A/B Test با Cache policy یکسان انجام شد.
  6. معیار پذیرش و Rollback تصویب شد.
  7. Monitoring پس از انتشار انجام شد.

جمع‌بندی

Degree of Parallelism Feedback زمانی انتخاب درستی است که مسئله واقعی به CPU Time و تغییر رفتار اجرا مربوط باشد. آن را یک لایه تطبیقی روی پایه سالم Schema، Statistics و Index در نظر بگیرید، نه جایگزین Tuning اصولی.

گام بعدی اجرای ده آزمایش این مقاله روی Query واقعی و مقایسه CXPACKET با Baseline است. برای دیدن ارتباط این قابلیت با سایر اعضای IQP، راهنمای جامع Intelligent Query Processing را مطالعه کنید.

خدمات برنامه‌نویسی و پایگاه داده

برنامه‌نویسی در اصفهان؛ قبول سفارش‌های برنامه‌نویسی و پایگاه داده: 09131253620.

انجام پروژه، آموزش برنامه‌نویسی و آموزش SQL Server توسط مجموعه‌ای معتبر با سابقه فعالیت حرفه‌ای از سال ۱۳۷۵ شمسی تاکنون.

برای سفارش پروژه، آموزش تخصصی، ایتا، واتساپ و تماس مستقیم با ما در ارتباط باشید.

تماس مستقیم با 09131253620

تماس با ما و ثبت درخواست

 

0 نظر

نظر محترم شما در مورد مقاله های وب سایت برنامه نویسی و پایگاه داده

نظرات محترم شما در خدمات رسانی بهتر ما را یاری می نمایند. لطفا اگر مایل بودید یک نظر ما را مهمان فرمائید. آدرس ایمیل و وب سایت شما نمایش داده نخواهد شد.

حرف 500 حداکثر