آموزش کامل حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server
مقدمه و مسئلهای که این موضوع حل میکند
حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server زمانی اهمیت پیدا میکند که مدیر پایگاه داده یا توسعهدهنده بخواهد درک اثر مقدار DEFAULT بر اصلاح خودکار Plan Regression و نحوه بازگشت از تصمیم موتور. این راهنما از تعریف پایه شروع میکند و سپس به روش مشاهده یا پیکربندی، Queryهای تشخیصی، خطاهای رایج و ملاحظات Performance میرسد.
پیشنیاز اصلی، دسترسی مناسب به SQL Server و شناخت اولیه از Query، Execution Plan و ساختار پایگاه داده است. در پایان میتوانید خروجی «سیاست DEFAULT برای اجبار آخرین پلن خوب در سطح پایگاه داده» را با زمینه درست تفسیر کنید و بهجای تغییر حدسی، یک تصمیم قابل بازگشت بگیرید.
دسترسی سریع
- تعریف، Scope و پیشنیاز
- روش اجرا یا مشاهده و اجزای کلیدی
- ده مثال عملی از پایه تا سناریوی Performance
- خطاها، Best Practices و چکلیست نهایی
تعریف و جایگاه فنی موضوع
حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server بخشی از خانواده «راهنمای جامع تنظیم خودکار در SQL Server» است. نقش آن در این خانواده، تبدیل یک مسئله کلی به سیگنال یا تنظیمی مشخص است تا بتوان رفتار موتور را بهصورت قابل اندازهگیری بررسی کرد. مفاهیم کلیدی این مقاله شامل FORCE_LAST_GOOD_PLAN، DEFAULT، Plan Regression، Query Store، Last Good Plan، Verification هستند.
جایگاه این موضوع را باید در کنار تنظیمات سطح Instance، سطح Database، Query Hintها و وضعیت واقعی Workload دید. استفاده درست یعنی ابتدا Scope را مشخص کنیم، سپس خروجی را در بازه زمانی معتبر بخوانیم و در نهایت هر تغییر را با معیارهایی مانند CPU، Duration، Throughput، IO و Regression بسنجیم.
این تصویر، حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server را از زاویه معماری و ارتباط اجزا نمایش میدهد و بر مفاهیم FORCE_LAST_GOOD_PLAN، DEFAULT، Plan Regression، Query Store تمرکز دارد.
نحو، پیکربندی و نوع نتیجه
الگوی پایه
SELECT name, desired_state_desc, actual_state_desc, reason_desc FROM sys.database_automatic_tuning_options;
اجزای مهم
- FORCE_LAST_GOOD_PLAN: این جزء در تحلیل حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server برای تعیین وضعیت، مرز اثر یا تفسیر خروجی استفاده میشود.
- DEFAULT: این جزء در تحلیل حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server برای تعیین وضعیت، مرز اثر یا تفسیر خروجی استفاده میشود.
- Plan Regression: این جزء در تحلیل حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server برای تعیین وضعیت، مرز اثر یا تفسیر خروجی استفاده میشود.
- Query Store: این جزء در تحلیل حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server برای تعیین وضعیت، مرز اثر یا تفسیر خروجی استفاده میشود.
- Last Good Plan: این جزء در تحلیل حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server برای تعیین وضعیت، مرز اثر یا تفسیر خروجی استفاده میشود.
- Verification: این جزء در تحلیل حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server برای تعیین وضعیت، مرز اثر یا تفسیر خروجی استفاده میشود.
رفتار ویژه و محدودیتها
خروجی مورد انتظار «سیاست DEFAULT برای اجبار آخرین پلن خوب در سطح پایگاه داده» است. رفتار دقیق به نسخه SQL Server، Edition، مجوزها و وضعیت سرویس وابسته است. برای DMVها دادهها میتوانند موقتی باشند؛ برای گزینههای پیکربندی نیز مقدار تنظیمشده و مقدار مؤثر باید جداگانه کنترل شود.
منطق اجرا و نکات فنی
جزء 1: FORCE_LAST_GOOD_PLAN
در تحلیل حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server، مفهوم FORCE_LAST_GOOD_PLAN یک نشانه مستقل نیست؛ باید آن را با Plan Regression و Baseline بار کاری ترکیب کرد. این رویکرد از تغییرهای شتابزده جلوگیری میکند و امکان مستندسازی دلیل تصمیم را فراهم میسازد.
جزء 2: DEFAULT
در تحلیل حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server، مفهوم DEFAULT یک نشانه مستقل نیست؛ باید آن را با Query Store و Baseline بار کاری ترکیب کرد. این رویکرد از تغییرهای شتابزده جلوگیری میکند و امکان مستندسازی دلیل تصمیم را فراهم میسازد.
جزء 3: Plan Regression
در تحلیل حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server، مفهوم Plan Regression یک نشانه مستقل نیست؛ باید آن را با Last Good Plan و Baseline بار کاری ترکیب کرد. این رویکرد از تغییرهای شتابزده جلوگیری میکند و امکان مستندسازی دلیل تصمیم را فراهم میسازد.
جزء 4: Query Store
در تحلیل حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server، مفهوم Query Store یک نشانه مستقل نیست؛ باید آن را با Verification و Baseline بار کاری ترکیب کرد. این رویکرد از تغییرهای شتابزده جلوگیری میکند و امکان مستندسازی دلیل تصمیم را فراهم میسازد.
این تصویر، حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server را از زاویه جریان اجرا از ورودی تا خروجی نمایش میدهد و بر مفاهیم FORCE_LAST_GOOD_PLAN، DEFAULT، Plan Regression، Query Store تمرکز دارد.
مثالهای عملی از ساده تا پیشرفته
مثال 1: مشاهده پایه برای حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server
در این سناریو، هدف آن است که مرحله 1 تحلیل حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server را بدون تکیه بر حدس اجرا کنیم. Query زیر یک ورودی یا خروجی قابل مشاهده میسازد و به شما اجازه میدهد نتیجه را با زمان نمونهبرداری، Scope و وضعیت Workload مرتبط کنید.
SELECT name, desired_state_desc, actual_state_desc, reason_desc FROM sys.database_automatic_tuning_options;
| شاخص | مقدار نمونه | تفسیر |
|---|
| Example 1 | DEFAULT | نتیجه باید در کنار Plan Regression بررسی شود |
| Scope | Automatic Tuning | اعتبار نتیجه به سطح اجرا و مجوز وابسته است |
نکته کاربردی مثال 1: خروجی را در Repository مانیتورینگ با Timestamp ذخیره کنید و قبل از هر اقدام، اختلاف آن را با Baseline همان ساعت و همان نوع بار بسنجید. این کار برای حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server احتمال تشخیص نادرست را کاهش میدهد.
مثال 2: تحلیل مرحلهای برای حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server
در این سناریو، هدف آن است که مرحله 2 تحلیل حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server را بدون تکیه بر حدس اجرا کنیم. Query زیر یک ورودی یا خروجی قابل مشاهده میسازد و به شما اجازه میدهد نتیجه را با زمان نمونهبرداری، Scope و وضعیت Workload مرتبط کنید.
ALTER DATABASE CURRENT SET AUTOMATIC_TUNING (FORCE_LAST_GOOD_PLAN = DEFAULT);
| شاخص | مقدار نمونه | تفسیر |
|---|
| Example 2 | Plan Regression | نتیجه باید در کنار Query Store بررسی شود |
| Scope | Automatic Tuning | اعتبار نتیجه به سطح اجرا و مجوز وابسته است |
نکته کاربردی مثال 2: خروجی را در Repository مانیتورینگ با Timestamp ذخیره کنید و قبل از هر اقدام، اختلاف آن را با Baseline همان ساعت و همان نوع بار بسنجید. این کار برای حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server احتمال تشخیص نادرست را کاهش میدهد.
مثال 3: تحلیل مرحلهای برای حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server
در این سناریو، هدف آن است که مرحله 3 تحلیل حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server را بدون تکیه بر حدس اجرا کنیم. Query زیر یک ورودی یا خروجی قابل مشاهده میسازد و به شما اجازه میدهد نتیجه را با زمان نمونهبرداری، Scope و وضعیت Workload مرتبط کنید.
SELECT * FROM sys.dm_db_tuning_recommendations;
| شاخص | مقدار نمونه | تفسیر |
|---|
| Example 3 | Query Store | نتیجه باید در کنار Last Good Plan بررسی شود |
| Scope | Automatic Tuning | اعتبار نتیجه به سطح اجرا و مجوز وابسته است |
نکته کاربردی مثال 3: خروجی را در Repository مانیتورینگ با Timestamp ذخیره کنید و قبل از هر اقدام، اختلاف آن را با Baseline همان ساعت و همان نوع بار بسنجید. این کار برای حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server احتمال تشخیص نادرست را کاهش میدهد.
مثال 4: تحلیل مرحلهای برای حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server
در این سناریو، هدف آن است که مرحله 4 تحلیل حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server را بدون تکیه بر حدس اجرا کنیم. Query زیر یک ورودی یا خروجی قابل مشاهده میسازد و به شما اجازه میدهد نتیجه را با زمان نمونهبرداری، Scope و وضعیت Workload مرتبط کنید.
SELECT actual_state_desc, reason_desc FROM sys.database_automatic_tuning_options WHERE name=N'FORCE_LAST_GOOD_PLAN';
| شاخص | مقدار نمونه | تفسیر |
|---|
| Example 4 | Last Good Plan | نتیجه باید در کنار Verification بررسی شود |
| Scope | Automatic Tuning | اعتبار نتیجه به سطح اجرا و مجوز وابسته است |
نکته کاربردی مثال 4: خروجی را در Repository مانیتورینگ با Timestamp ذخیره کنید و قبل از هر اقدام، اختلاف آن را با Baseline همان ساعت و همان نوع بار بسنجید. این کار برای حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server احتمال تشخیص نادرست را کاهش میدهد.
مثال 5: تحلیل مرحلهای برای حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server
در این سناریو، هدف آن است که مرحله 5 تحلیل حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server را بدون تکیه بر حدس اجرا کنیم. Query زیر یک ورودی یا خروجی قابل مشاهده میسازد و به شما اجازه میدهد نتیجه را با زمان نمونهبرداری، Scope و وضعیت Workload مرتبط کنید.
SELECT q.query_id, p.plan_id, rs.avg_duration FROM sys.query_store_query AS q JOIN sys.query_store_plan AS p ON p.query_id=q.query_id JOIN sys.query_store_runtime_stats AS rs ON rs.plan_id=p.plan_id;
| شاخص | مقدار نمونه | تفسیر |
|---|
| Example 5 | Verification | نتیجه باید در کنار Revert بررسی شود |
| Scope | Automatic Tuning | اعتبار نتیجه به سطح اجرا و مجوز وابسته است |
نکته کاربردی مثال 5: خروجی را در Repository مانیتورینگ با Timestamp ذخیره کنید و قبل از هر اقدام، اختلاف آن را با Baseline همان ساعت و همان نوع بار بسنجید. این کار برای حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server احتمال تشخیص نادرست را کاهش میدهد.
مثال 6: ساخت Snapshot برای حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server
در این سناریو، هدف آن است که مرحله 6 تحلیل حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server را بدون تکیه بر حدس اجرا کنیم. Query زیر یک ورودی یا خروجی قابل مشاهده میسازد و به شما اجازه میدهد نتیجه را با زمان نمونهبرداری، Scope و وضعیت Workload مرتبط کنید.
ALTER DATABASE CURRENT SET QUERY_STORE = ON;
| شاخص | مقدار نمونه | تفسیر |
|---|
| Example 6 | Revert | نتیجه باید در کنار Monitoring بررسی شود |
| Scope | Automatic Tuning | اعتبار نتیجه به سطح اجرا و مجوز وابسته است |
نکته کاربردی مثال 6: خروجی را در Repository مانیتورینگ با Timestamp ذخیره کنید و قبل از هر اقدام، اختلاف آن را با Baseline همان ساعت و همان نوع بار بسنجید. این کار برای حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server احتمال تشخیص نادرست را کاهش میدهد.
مثال 7: تحلیل مرحلهای برای حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server
در این سناریو، هدف آن است که مرحله 7 تحلیل حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server را بدون تکیه بر حدس اجرا کنیم. Query زیر یک ورودی یا خروجی قابل مشاهده میسازد و به شما اجازه میدهد نتیجه را با زمان نمونهبرداری، Scope و وضعیت Workload مرتبط کنید.
SELECT current_storage_size_mb, max_storage_size_mb, readonly_reason FROM sys.database_query_store_options;
| شاخص | مقدار نمونه | تفسیر |
|---|
| Example 7 | Monitoring | نتیجه باید در کنار FORCE_LAST_GOOD_PLAN بررسی شود |
| Scope | Automatic Tuning | اعتبار نتیجه به سطح اجرا و مجوز وابسته است |
نکته کاربردی مثال 7: خروجی را در Repository مانیتورینگ با Timestamp ذخیره کنید و قبل از هر اقدام، اختلاف آن را با Baseline همان ساعت و همان نوع بار بسنجید. این کار برای حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server احتمال تشخیص نادرست را کاهش میدهد.
مثال 8: تحلیل مرحلهای برای حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server
در این سناریو، هدف آن است که مرحله 8 تحلیل حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server را بدون تکیه بر حدس اجرا کنیم. Query زیر یک ورودی یا خروجی قابل مشاهده میسازد و به شما اجازه میدهد نتیجه را با زمان نمونهبرداری، Scope و وضعیت Workload مرتبط کنید.
BEGIN TRY
ALTER DATABASE CURRENT SET AUTOMATIC_TUNING (FORCE_LAST_GOOD_PLAN = DEFAULT);
END TRY
BEGIN CATCH
THROW;
END CATCH;
| شاخص | مقدار نمونه | تفسیر |
|---|
| Example 8 | FORCE_LAST_GOOD_PLAN | نتیجه باید در کنار DEFAULT بررسی شود |
| Scope | Automatic Tuning | اعتبار نتیجه به سطح اجرا و مجوز وابسته است |
نکته کاربردی مثال 8: خروجی را در Repository مانیتورینگ با Timestamp ذخیره کنید و قبل از هر اقدام، اختلاف آن را با Baseline همان ساعت و همان نوع بار بسنجید. این کار برای حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server احتمال تشخیص نادرست را کاهش میدهد.
مثال 9: اعتبارسنجی و بهینهسازی برای حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server
در این سناریو، هدف آن است که مرحله 9 تحلیل حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server را بدون تکیه بر حدس اجرا کنیم. Query زیر یک ورودی یا خروجی قابل مشاهده میسازد و به شما اجازه میدهد نتیجه را با زمان نمونهبرداری، Scope و وضعیت Workload مرتبط کنید.
-- روش اصلاح: قبل و بعد از تغییر Snapshot بگیرید
SELECT GETDATE() AS sample_time, * FROM sys.database_automatic_tuning_options;
| شاخص | مقدار نمونه | تفسیر |
|---|
| Example 9 | DEFAULT | نتیجه باید در کنار Plan Regression بررسی شود |
| Scope | Automatic Tuning | اعتبار نتیجه به سطح اجرا و مجوز وابسته است |
نکته کاربردی مثال 9: خروجی را در Repository مانیتورینگ با Timestamp ذخیره کنید و قبل از هر اقدام، اختلاف آن را با Baseline همان ساعت و همان نوع بار بسنجید. این کار برای حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server احتمال تشخیص نادرست را کاهش میدهد.
مثال 10: اعتبارسنجی و بهینهسازی برای حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server
در این سناریو، هدف آن است که مرحله 10 تحلیل حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server را بدون تکیه بر حدس اجرا کنیم. Query زیر یک ورودی یا خروجی قابل مشاهده میسازد و به شما اجازه میدهد نتیجه را با زمان نمونهبرداری، Scope و وضعیت Workload مرتبط کنید.
ALTER DATABASE CURRENT SET AUTOMATIC_TUNING (FORCE_LAST_GOOD_PLAN = DEFAULT); -- نمونه بازگشت
| شاخص | مقدار نمونه | تفسیر |
|---|
| Example 10 | Plan Regression | نتیجه باید در کنار Query Store بررسی شود |
| Scope | Automatic Tuning | اعتبار نتیجه به سطح اجرا و مجوز وابسته است |
نکته کاربردی مثال 10: خروجی را در Repository مانیتورینگ با Timestamp ذخیره کنید و قبل از هر اقدام، اختلاف آن را با Baseline همان ساعت و همان نوع بار بسنجید. این کار برای حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server احتمال تشخیص نادرست را کاهش میدهد.
کاربردهای واقعی در پروژه
در پروژه سازمانی، حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server میتواند در Runbook عیبیابی، گزارش سلامت روزانه، بررسی Incident و ارزیابی تغییرات Performance قرار گیرد. برای مثال، تیم DBA ابتدا Snapshot مربوط به FORCE_LAST_GOOD_PLAN را ثبت میکند، سپس آن را با DEFAULT و Plan Regression همبسته میسازد و فقط در صورت مشاهده الگوی پایدار، تغییر پیشنهادی را در محیط Stage آزمایش میکند.
در محیطهای چندپایگاهداده، بهتر است Context شامل نام Instance، Database، زمان، نسخه، Availability Role و شناسه Deployment باشد. این اطلاعات کمک میکند خروجی حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server از محیطی به محیط دیگر اشتباه تعمیم داده نشود و تحلیل پس از رخداد نیز قابل بازسازی بماند.
نکته و هشدار مهم
اجبار پلن خوب جایگزین رفع ریشهای مشکل Statistics، Cardinality یا تغییر الگوی داده نیست.
پیش از اجرای فرمانهای تغییردهنده مرتبط با حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server، نسخه فعلی را ثبت کنید، معیار Rollback تعریف کنید و اثر را در یک بازه کنترلشده بسنجید. فرمانهای پاکسازی Cache یا تغییرات سراسری در Production نباید صرفاً برای مشاهده نتیجه سریع اجرا شوند.
اشتباهات رایج و روش اصلاح
خطای رایج 1: تفسیر ناقص FORCE_LAST_GOOD_PLAN
خطا زمانی رخ میدهد که FORCE_LAST_GOOD_PLAN بدون توجه به Plan Regression معیار قطعی تلقی شود. روش اصلاح این است که Snapshot قبل و بعد، Scope، مدت نمونهبرداری و تغییرات همزمان ثبت شوند و سپس تصمیم با یک Query دوم یا Execution Plan تأیید شود.
خطای رایج 2: تفسیر ناقص DEFAULT
خطا زمانی رخ میدهد که DEFAULT بدون توجه به Query Store معیار قطعی تلقی شود. روش اصلاح این است که Snapshot قبل و بعد، Scope، مدت نمونهبرداری و تغییرات همزمان ثبت شوند و سپس تصمیم با یک Query دوم یا Execution Plan تأیید شود.
خطای رایج 3: تفسیر ناقص Plan Regression
خطا زمانی رخ میدهد که Plan Regression بدون توجه به Last Good Plan معیار قطعی تلقی شود. روش اصلاح این است که Snapshot قبل و بعد، Scope، مدت نمونهبرداری و تغییرات همزمان ثبت شوند و سپس تصمیم با یک Query دوم یا Execution Plan تأیید شود.
خطای رایج 4: تفسیر ناقص Query Store
خطا زمانی رخ میدهد که Query Store بدون توجه به Verification معیار قطعی تلقی شود. روش اصلاح این است که Snapshot قبل و بعد، Scope، مدت نمونهبرداری و تغییرات همزمان ثبت شوند و سپس تصمیم با یک Query دوم یا Execution Plan تأیید شود.
خطای رایج 5: تفسیر ناقص Last Good Plan
خطا زمانی رخ میدهد که Last Good Plan بدون توجه به Revert معیار قطعی تلقی شود. روش اصلاح این است که Snapshot قبل و بعد، Scope، مدت نمونهبرداری و تغییرات همزمان ثبت شوند و سپس تصمیم با یک Query دوم یا Execution Plan تأیید شود.
Performance Considerations
هزینه استفاده از حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server به فرکانس اجرا، حجم خروجی، نوع Join و نحوه ذخیرهسازی Snapshot وابسته است. Queryهای مانیتورینگ را با ستونهای لازم، TOP منطقی و فیلتر مناسب بنویسید. در گزارشهای پرتکرار، نتیجه خام بزرگ را در هر بار Refresh دوباره پردازش نکنید و از جدول تاریخچه با ایندکس روی SampleTime و کلیدهای اصلی بهره ببرید.
در تحلیل Parallelism و Automatic Tuning، SARGability، Cardinality، Statistics و کیفیت Execution Plan اغلب از خود گزینه مهمترند. برای حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server ابتدا بررسی کنید آیا Query اصلی Scan غیرضروری، Estimate نادرست، Spill، Worker Starvation یا Compile مکرر دارد؛ سپس اثر تغییر تنظیم را با CPU و Duration توأمان بسنجید.
Best Practices
- برای حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server Baseline قابل مقایسه ثبت کنید.
- Scope و مجوز مربوط به FORCE_LAST_GOOD_PLAN را مستند کنید.
- خروجی را با DEFAULT و Plan Regression همبسته تحلیل کنید.
- تغییر را ابتدا در Stage یا بازه کمریسک اجرا کنید.
- معیار موفقیت، بازگشت و مدت مشاهده را پیش از تغییر تعیین کنید.
- Queryهای پایش را سبک، محدود و قابل نسخهبندی نگه دارید.
این تصویر، حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server را از زاویه تصمیم فنی، خطا و ملاحظات کارایی نمایش میدهد و بر مفاهیم FORCE_LAST_GOOD_PLAN، DEFAULT، Plan Regression، Query Store تمرکز دارد.
مزایا، محدودیتها و زمان نامناسب استفاده
| بعد | تحلیل |
|---|
| مزیت | ایجاد دید مشخص درباره درک اثر مقدار DEFAULT بر اصلاح خودکار Plan Regression و نحوه بازگشت از تصمیم موتور |
| محدودیت | وابستگی به Scope، نسخه، زمان نمونهبرداری و مجوز |
| زمان نامناسب | تصمیمگیری فوری بدون Baseline یا اجرای تغییر سراسری در ساعت اوج |
| معیار جایگزین | ترکیب FORCE_LAST_GOOD_PLAN با DEFAULT و شاخصهای Workload |
سؤالات متداول
پرسش 1: حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server دقیقاً چه مسئلهای را حل میکند؟
پاسخ باید بر پایه Scope، نسخه، Baseline و شواهد همان محیط ارائه شود. در موضوع «حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server»، هدف این است که درک اثر مقدار DEFAULT بر اصلاح خودکار Plan Regression و نحوه بازگشت از تصمیم موتور؛ بنابراین یک مقدار منفرد یا Snapshot بدون زمینه کافی نیست و بهتر است نتیجه با تنظیمات مؤثر، پلن اجرا و روند زمانی مقایسه شود.
پرسش 2: برای استفاده از حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server چه مجوزی لازم است؟
پاسخ باید بر پایه Scope، نسخه، Baseline و شواهد همان محیط ارائه شود. در موضوع «حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server»، هدف این است که درک اثر مقدار DEFAULT بر اصلاح خودکار Plan Regression و نحوه بازگشت از تصمیم موتور؛ بنابراین یک مقدار منفرد یا Snapshot بدون زمینه کافی نیست و بهتر است نتیجه با تنظیمات مؤثر، پلن اجرا و روند زمانی مقایسه شود.
پرسش 3: خروجی حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server را چگونه باید تفسیر کرد؟
پاسخ باید بر پایه Scope، نسخه، Baseline و شواهد همان محیط ارائه شود. در موضوع «حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server»، هدف این است که درک اثر مقدار DEFAULT بر اصلاح خودکار Plan Regression و نحوه بازگشت از تصمیم موتور؛ بنابراین یک مقدار منفرد یا Snapshot بدون زمینه کافی نیست و بهتر است نتیجه با تنظیمات مؤثر، پلن اجرا و روند زمانی مقایسه شود.
پرسش 4: آیا حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server در همه نسخههای SQL Server یکسان است؟
پاسخ باید بر پایه Scope، نسخه، Baseline و شواهد همان محیط ارائه شود. در موضوع «حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server»، هدف این است که درک اثر مقدار DEFAULT بر اصلاح خودکار Plan Regression و نحوه بازگشت از تصمیم موتور؛ بنابراین یک مقدار منفرد یا Snapshot بدون زمینه کافی نیست و بهتر است نتیجه با تنظیمات مؤثر، پلن اجرا و روند زمانی مقایسه شود.
پرسش 5: رفتار حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server پس از Restart یا Failover چیست؟
پاسخ باید بر پایه Scope، نسخه، Baseline و شواهد همان محیط ارائه شود. در موضوع «حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server»، هدف این است که درک اثر مقدار DEFAULT بر اصلاح خودکار Plan Regression و نحوه بازگشت از تصمیم موتور؛ بنابراین یک مقدار منفرد یا Snapshot بدون زمینه کافی نیست و بهتر است نتیجه با تنظیمات مؤثر، پلن اجرا و روند زمانی مقایسه شود.
پرسش 6: چگونه اثر Performance مربوط به حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server اندازهگیری میشود؟
پاسخ باید بر پایه Scope، نسخه، Baseline و شواهد همان محیط ارائه شود. در موضوع «حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server»، هدف این است که درک اثر مقدار DEFAULT بر اصلاح خودکار Plan Regression و نحوه بازگشت از تصمیم موتور؛ بنابراین یک مقدار منفرد یا Snapshot بدون زمینه کافی نیست و بهتر است نتیجه با تنظیمات مؤثر، پلن اجرا و روند زمانی مقایسه شود.
پرسش 7: چه زمانی نباید از حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server استفاده کرد؟
پاسخ باید بر پایه Scope، نسخه، Baseline و شواهد همان محیط ارائه شود. در موضوع «حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server»، هدف این است که درک اثر مقدار DEFAULT بر اصلاح خودکار Plan Regression و نحوه بازگشت از تصمیم موتور؛ بنابراین یک مقدار منفرد یا Snapshot بدون زمینه کافی نیست و بهتر است نتیجه با تنظیمات مؤثر، پلن اجرا و روند زمانی مقایسه شود.
پرسش 8: رایجترین خطای تشخیص درباره حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server چیست؟
پاسخ باید بر پایه Scope، نسخه، Baseline و شواهد همان محیط ارائه شود. در موضوع «حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server»، هدف این است که درک اثر مقدار DEFAULT بر اصلاح خودکار Plan Regression و نحوه بازگشت از تصمیم موتور؛ بنابراین یک مقدار منفرد یا Snapshot بدون زمینه کافی نیست و بهتر است نتیجه با تنظیمات مؤثر، پلن اجرا و روند زمانی مقایسه شود.
پرسش 9: چگونه نتیجه حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server را برای گزارشگیری ذخیره کنیم؟
پاسخ باید بر پایه Scope، نسخه، Baseline و شواهد همان محیط ارائه شود. در موضوع «حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server»، هدف این است که درک اثر مقدار DEFAULT بر اصلاح خودکار Plan Regression و نحوه بازگشت از تصمیم موتور؛ بنابراین یک مقدار منفرد یا Snapshot بدون زمینه کافی نیست و بهتر است نتیجه با تنظیمات مؤثر، پلن اجرا و روند زمانی مقایسه شود.
پرسش 10: قدم بعدی پس از مشاهده نتیجه حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server چیست؟
پاسخ باید بر پایه Scope، نسخه، Baseline و شواهد همان محیط ارائه شود. در موضوع «حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server»، هدف این است که درک اثر مقدار DEFAULT بر اصلاح خودکار Plan Regression و نحوه بازگشت از تصمیم موتور؛ بنابراین یک مقدار منفرد یا Snapshot بدون زمینه کافی نیست و بهتر است نتیجه با تنظیمات مؤثر، پلن اجرا و روند زمانی مقایسه شود.
سؤالات مصاحبه
سؤال مصاحبه 1: ارتباط حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server با FORCE_LAST_GOOD_PLAN چیست؟
پاسخ حرفهای باید تعریف روشن، Scope، یک نمونه Query، محدودیت و روش اعتبارسنجی را پوشش دهد. نام بردن از DEFAULT بدون توضیح ترتیب تصمیم یا اثر عملی، پاسخ کامل محسوب نمیشود.
سؤال مصاحبه 2: ارتباط حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server با DEFAULT چیست؟
پاسخ حرفهای باید تعریف روشن، Scope، یک نمونه Query، محدودیت و روش اعتبارسنجی را پوشش دهد. نام بردن از Plan Regression بدون توضیح ترتیب تصمیم یا اثر عملی، پاسخ کامل محسوب نمیشود.
سؤال مصاحبه 3: ارتباط حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server با Plan Regression چیست؟
پاسخ حرفهای باید تعریف روشن، Scope، یک نمونه Query، محدودیت و روش اعتبارسنجی را پوشش دهد. نام بردن از Query Store بدون توضیح ترتیب تصمیم یا اثر عملی، پاسخ کامل محسوب نمیشود.
سؤال مصاحبه 4: ارتباط حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server با Query Store چیست؟
پاسخ حرفهای باید تعریف روشن، Scope، یک نمونه Query، محدودیت و روش اعتبارسنجی را پوشش دهد. نام بردن از Last Good Plan بدون توضیح ترتیب تصمیم یا اثر عملی، پاسخ کامل محسوب نمیشود.
سؤال مصاحبه 5: ارتباط حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server با Last Good Plan چیست؟
پاسخ حرفهای باید تعریف روشن، Scope، یک نمونه Query، محدودیت و روش اعتبارسنجی را پوشش دهد. نام بردن از Verification بدون توضیح ترتیب تصمیم یا اثر عملی، پاسخ کامل محسوب نمیشود.
سؤال مصاحبه 6: ارتباط حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server با Verification چیست؟
پاسخ حرفهای باید تعریف روشن، Scope، یک نمونه Query، محدودیت و روش اعتبارسنجی را پوشش دهد. نام بردن از Revert بدون توضیح ترتیب تصمیم یا اثر عملی، پاسخ کامل محسوب نمیشود.
چکلیست نهایی
- نسخه و پشتیبانی حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server را بررسی کنید.
- مجوز و Scope را کنترل کنید.
- Snapshot اولیه و Baseline را ذخیره کنید.
- Queryهای مثال را ابتدا در محیط کمریسک اجرا کنید.
- نتیجه را با CPU، IO، Duration و Plan همبسته کنید.
- برای تغییر، معیار Success و Rollback بنویسید.
- پس از تغییر حداقل یک بازه کامل بار کاری را مشاهده کنید.
جمعبندی
حالت FORCE_LAST_GOOD_PLAN = DEFAULT در Automatic Tuning SQL Server زمانی ارزشمند است که از آن بهعنوان بخشی از یک زنجیره تشخیص استفاده شود، نه یک عدد یا تنظیم مستقل. مسیر پیشنهادی این است که Scope را مشخص کنید، داده را در بازه معتبر جمعآوری کنید، نتیجه را با DEFAULT و Plan Regression تأیید کنید و فقط سپس تغییر قابل بازگشت انجام دهید.
برای مشاهده ارتباط این موضوع با اعضای دیگر خانواده، مقاله راهنمای جامع تنظیم خودکار در SQL Server را مطالعه کنید.
خدمات برنامهنویسی و پایگاه داده
برای برنامهنویسی در اصفهان، انجام پروژه، آموزش برنامهنویسی و آموزش SQL Server میتوانید با مجموعهای معتبر با سابقه فعالیت حرفهای از سال ۱۳۷۵ شمسی تماس بگیرید.
قبول سفارشهای برنامهنویسی و پایگاه داده: 09131253620. ارتباط از طریق ایتا، واتساپ و تماس مستقیم برای بررسی نیاز پروژه فراهم است.
تماس با ما برای سفارش پروژه و دریافت مشاوره