راهنمای جامع Resource Governor برای مدیریت منابع SQL Server
دامنه این راهنمای جامع
این مقاله نقشه کامل خانواده Resource Governor در SQL Server است. هدف آن حل مسئله «تفکیک بارکاری و جلوگیری از مصرف نامتوازن CPU، حافظه و ظرفیت درخواستها» و ایجاد ارتباط روشن میان گزینههای پیکربندی، اشیای مدیریتی و Queryهای تشخیصی است.
مخاطبان اصلی مدیران پایگاه داده و تیمهای عملیات که چند بارکاری را روی یک Instance میزبانی میکنند هستند. پیشنیاز، شناخت T-SQL، دسترسی آزمایشگاهی و توانایی ثبت Baseline است. در پایان میتوانید اعضای این خانواده را دستهبندی کنید، تفاوت کاربرد آنها را تشخیص دهید و برای هر مورد به آموزش مستقل بروید.
این خانواده دقیقاً 16 موضوع فرزند دارد و لینک هر موضوع فقط در همین مجموعه ارائه شده است. شماره مجموعه بخشی از عنوان یا Slug نیست و ترتیب معرفی مطابق داده ورودی حفظ شده است.
تعریف مجموعه و جایگاه آن
Resource Governor مجموعهای از قابلیتهای SQL Server است که برای تفکیک بارکاری و جلوگیری از مصرف نامتوازن CPU، حافظه و ظرفیت درخواستها بهکار میرود.
هسته فنی این مجموعه بر مفاهیم Resource Pool، Workload Group، Classifier Function، RECONFIGURE، CPU Cap، Memory Grant استوار است. انتخاب یک عضو بدون شناخت رابطه آن با دیگر اجزا میتواند به تنظیم ناقص، مشاهده اشتباه یا نتیجهای کوتاهمدت منجر شود.
نقشه مجموعه نشان میدهد اعضای Resource Governor چگونه از تعریف و پیکربندی به مشاهده Runtime، تحلیل هزینه و تصمیم اصلاحی متصل میشوند.
دستهبندی اجزا و مسیر مطالعه
4. آموزش CREATE WORKLOAD GROUP در Resource Governor
CREATE WORKLOAD GROUP سیاست درخواستهای یک دسته Session را درون Resource Pool مدیریت میکند؛ تنظیماتی مانند اهمیت، Timeout و Degree of Parallelism در این سطح قابل کنترلاند.
آموزش کامل و مثالهای عملی CREATE WORKLOAD GROUP
5. آموزش ALTER WORKLOAD GROUP و تنظیم سیاست درخواستها
ALTER WORKLOAD GROUP سیاست درخواستهای یک دسته Session را درون Resource Pool مدیریت میکند؛ تنظیماتی مانند اهمیت، Timeout و Degree of Parallelism در این سطح قابل کنترلاند.
آموزش کامل و مثالهای عملی ALTER WORKLOAD GROUP
6. آموزش امن DROP WORKLOAD GROUP در SQL Server
DROP WORKLOAD GROUP سیاست درخواستهای یک دسته Session را درون Resource Pool مدیریت میکند؛ تنظیماتی مانند اهمیت، Timeout و Degree of Parallelism در این سطح قابل کنترلاند.
آموزش کامل و مثالهای عملی DROP WORKLOAD GROUP
7. طراحی Classifier Function برای دستهبندی اتصالها در Resource Governor
Classifier Function تابع اسکیمابایندشدهای است که هنگام ورود اتصال اجرا میشود و نام Workload Group مقصد را بر اساس ویژگیهای Session برمیگرداند.
آموزش کامل و مثالهای عملی Classifier Function
جدول مقایسه موضوعات
| موضوع یا تابع | نوع | کاربرد اصلی / نکته مهم | لینک آموزش کامل |
|---|
| CREATE RESOURCE POOL | COMMAND | CREATE RESOURCE POOL ظرف منابع فیزیکی را با حداقل و حداکثر CPU، حافظه و محدودیتهای مرتبط ایجاد میکند.… | مطالعه آموزش کامل |
| ALTER RESOURCE POOL | COMMAND | ALTER RESOURCE POOL سهم و محدودیت Pool موجود را تغییر میدهد و پس از RECONFIGURE در پیکربندی مؤثر میشود.… | مطالعه آموزش کامل |
| DROP RESOURCE POOL | COMMAND | DROP RESOURCE POOL تعریف Pool کاربر را حذف میکند؛ پیش از آن باید وابستگی Workload Groupها برطرف و تغییر با RECONFIGURE اعمال شود.… | مطالعه آموزش کامل |
| CREATE WORKLOAD GROUP | COMMAND | CREATE WORKLOAD GROUP سیاست درخواستهای یک دسته Session را درون Resource Pool مدیریت میکند؛ تنظیماتی مانند اهمیت، Timeout و Degree of Parallelism در … | مطالعه آموزش کامل |
| ALTER WORKLOAD GROUP | COMMAND | ALTER WORKLOAD GROUP سیاست درخواستهای یک دسته Session را درون Resource Pool مدیریت میکند؛ تنظیماتی مانند اهمیت، Timeout و Degree of Parallelism در ا… | مطالعه آموزش کامل |
| DROP WORKLOAD GROUP | COMMAND | DROP WORKLOAD GROUP سیاست درخواستهای یک دسته Session را درون Resource Pool مدیریت میکند؛ تنظیماتی مانند اهمیت، Timeout و Degree of Parallelism در ای… | مطالعه آموزش کامل |
| Classifier Function | GENERAL_TOPIC | Classifier Function تابع اسکیمابایندشدهای است که هنگام ورود اتصال اجرا میشود و نام Workload Group مقصد را بر اساس ویژگیهای Session برمیگرداند.… | مطالعه آموزش کامل |
| ALTER RESOURCE GOVERNOR RECONFIGURE | COMMAND | ALTER RESOURCE GOVERNOR RECONFIGURE وضعیت سراسری Resource Governor را تغییر میدهد و باید با آگاهی از اثر آن بر Sessionهای جدید، آمار Runtime و بازگشت… | مطالعه آموزش کامل |
| ALTER RESOURCE GOVERNOR DISABLE | COMMAND | ALTER RESOURCE GOVERNOR DISABLE وضعیت سراسری Resource Governor را تغییر میدهد و باید با آگاهی از اثر آن بر Sessionهای جدید، آمار Runtime و بازگشتپذی… | مطالعه آموزش کامل |
| ALTER RESOURCE GOVERNOR RESET STATISTICS | COMMAND | ALTER RESOURCE GOVERNOR RESET STATISTICS وضعیت سراسری Resource Governor را تغییر میدهد و باید با آگاهی از اثر آن بر Sessionهای جدید، آمار Runtime و ب… | مطالعه آموزش کامل |
| sys.resource_governor_configuration | DMV_OR_VIEW | sys.resource_governor_configuration نمای سیستمی Resource Governor است که وضعیت تعریفشده یا آمار زمان اجرای Pool، Group و پیکربندی را برای پایش ظرفیت … | مطالعه آموزش کامل |
| sys.resource_governor_resource_pools | DMV_OR_VIEW | sys.resource_governor_resource_pools نمای سیستمی Resource Governor است که وضعیت تعریفشده یا آمار زمان اجرای Pool، Group و پیکربندی را برای پایش ظرفیت… | مطالعه آموزش کامل |
| sys.resource_governor_workload_groups | DMV_OR_VIEW | sys.resource_governor_workload_groups نمای سیستمی Resource Governor است که وضعیت تعریفشده یا آمار زمان اجرای Pool، Group و پیکربندی را برای پایش ظرفی… | مطالعه آموزش کامل |
| sys.dm_resource_governor_resource_pools | DMV_OR_VIEW | sys.dm_resource_governor_resource_pools نمای سیستمی Resource Governor است که وضعیت تعریفشده یا آمار زمان اجرای Pool، Group و پیکربندی را برای پایش ظر… | مطالعه آموزش کامل |
| sys.dm_resource_governor_workload_groups | DMV_OR_VIEW | sys.dm_resource_governor_workload_groups نمای سیستمی Resource Governor است که وضعیت تعریفشده یا آمار زمان اجرای Pool، Group و پیکربندی را برای پایش ظ… | مطالعه آموزش کامل |
| sys.dm_resource_governor_configuration | DMV_OR_VIEW | sys.dm_resource_governor_configuration نمای سیستمی Resource Governor است که وضعیت تعریفشده یا آمار زمان اجرای Pool، Group و پیکربندی را برای پایش ظرف… | مطالعه آموزش کامل |
این جریان نشان میدهد برای Resource Governor ابتدا مسئله و Scope تعیین میشود، سپس عضو مناسب انتخاب، تغییر اعمال و خروجی با View یا DMV مرتبط کنترل میشود.
شش مثال ترکیبی و قابل اجرا
مثال ترکیبی 1: کنترل مرحله 1 در Resource Governor
این مثال بخشی از زنجیره تصمیم Resource Governor را پوشش میدهد و برای ساخت Baseline یا تأیید وضعیت استفاده میشود. آن را با نام اشیا و Permission محیط مقصد هماهنگ کنید.
SELECT * FROM sys.resource_governor_configuration;
| شاخص | خروجی نمونه |
|---|
| Metric_1398_1 | وضعیت نمونه برای مرحله 1 |
| Decision | ادامه، اصلاح یا Rollback بر اساس Baseline |
نکته فنی مثال 1: نتیجه را در کنار تغییرات همزمان Instance تحلیل کنید و از یک مشاهده منفرد نتیجهگیری قطعی نکنید.
مثال ترکیبی 2: کنترل مرحله 2 در Resource Governor
این مثال بخشی از زنجیره تصمیم Resource Governor را پوشش میدهد و برای ساخت Baseline یا تأیید وضعیت استفاده میشود. آن را با نام اشیا و Permission محیط مقصد هماهنگ کنید.
SELECT name, max_cpu_percent, max_memory_percent FROM sys.resource_governor_resource_pools;
| شاخص | خروجی نمونه |
|---|
| Metric_1398_2 | وضعیت نمونه برای مرحله 2 |
| Decision | ادامه، اصلاح یا Rollback بر اساس Baseline |
نکته فنی مثال 2: نتیجه را در کنار تغییرات همزمان Instance تحلیل کنید و از یک مشاهده منفرد نتیجهگیری قطعی نکنید.
مثال ترکیبی 3: کنترل مرحله 3 در Resource Governor
این مثال بخشی از زنجیره تصمیم Resource Governor را پوشش میدهد و برای ساخت Baseline یا تأیید وضعیت استفاده میشود. آن را با نام اشیا و Permission محیط مقصد هماهنگ کنید.
SELECT name, pool_id, importance FROM sys.resource_governor_workload_groups;
| شاخص | خروجی نمونه |
|---|
| Metric_1398_3 | وضعیت نمونه برای مرحله 3 |
| Decision | ادامه، اصلاح یا Rollback بر اساس Baseline |
نکته فنی مثال 3: نتیجه را در کنار تغییرات همزمان Instance تحلیل کنید و از یک مشاهده منفرد نتیجهگیری قطعی نکنید.
مثال ترکیبی 4: کنترل مرحله 4 در Resource Governor
این مثال بخشی از زنجیره تصمیم Resource Governor را پوشش میدهد و برای ساخت Baseline یا تأیید وضعیت استفاده میشود. آن را با نام اشیا و Permission محیط مقصد هماهنگ کنید.
SELECT name, active_session_count, total_cpu_usage_ms FROM sys.dm_resource_governor_workload_groups;
| شاخص | خروجی نمونه |
|---|
| Metric_1398_4 | وضعیت نمونه برای مرحله 4 |
| Decision | ادامه، اصلاح یا Rollback بر اساس Baseline |
نکته فنی مثال 4: نتیجه را در کنار تغییرات همزمان Instance تحلیل کنید و از یک مشاهده منفرد نتیجهگیری قطعی نکنید.
مثال ترکیبی 5: کنترل مرحله 5 در Resource Governor
این مثال بخشی از زنجیره تصمیم Resource Governor را پوشش میدهد و برای ساخت Baseline یا تأیید وضعیت استفاده میشود. آن را با نام اشیا و Permission محیط مقصد هماهنگ کنید.
SELECT session_id, program_name, group_id FROM sys.dm_exec_sessions WHERE is_user_process = 1;
| شاخص | خروجی نمونه |
|---|
| Metric_1398_5 | وضعیت نمونه برای مرحله 5 |
| Decision | ادامه، اصلاح یا Rollback بر اساس Baseline |
نکته فنی مثال 5: نتیجه را در کنار تغییرات همزمان Instance تحلیل کنید و از یک مشاهده منفرد نتیجهگیری قطعی نکنید.
مثال ترکیبی 6: کنترل مرحله 6 در Resource Governor
این مثال بخشی از زنجیره تصمیم Resource Governor را پوشش میدهد و برای ساخت Baseline یا تأیید وضعیت استفاده میشود. آن را با نام اشیا و Permission محیط مقصد هماهنگ کنید.
ALTER RESOURCE GOVERNOR RECONFIGURE;
| شاخص | خروجی نمونه |
|---|
| Metric_1398_6 | وضعیت نمونه برای مرحله 6 |
| Decision | ادامه، اصلاح یا Rollback بر اساس Baseline |
نکته فنی مثال 6: نتیجه را در کنار تغییرات همزمان Instance تحلیل کنید و از یک مشاهده منفرد نتیجهگیری قطعی نکنید.
سناریوهای واقعی
در سناریوی سازمانی، Resource Governor معمولاً برای یک Query منفرد انتخاب نمیشود؛ بلکه بخشی از طراحی ظرفیت، SLO و Change Management است. ابتدا Workloadها بر اساس اهمیت و رفتار طبقهبندی میشوند، سپس ابزار مناسب برای کنترل یا مشاهده هر دسته انتخاب میشود.
سناریوی دوم، عیبیابی پس از رشد بار است. در این حالت تیم باید میان مشکل طراحی داده، تنظیم Instance، الگوی اتصال و محدودیت منابع تفکیک قائل شود. اعضای Resource Governor شواهد لازم برای این تفکیک را فراهم میکنند اما جایگزین تحلیل ریشهای نیستند.
نکته مهم در طراحی خانواده
هیچ عضو Resource Governor را بهصورت جدا از وابستگیها و بدون Rollback در Production اجرا نکنید. برخی تغییرات فقط پس از Reconfigure، Compile جدید، Restart یا اتصال جدید دیده میشوند؛ بنابراین زمان مشاهده باید با مدل اثر همان عضو هماهنگ باشد.
اشتباهات رایج
- انتخاب ابزار بر اساس نام و نه Scope واقعی اثر.
- نداشتن Baseline و مقایسه با بازه بار نامشابه.
- ترکیب همزمان چند تغییر و ناممکن شدن تشخیص علت.
- نادیده گرفتن Permission، Edition یا تفاوت نسخه.
- حذف یا Disable بدون ثبت وابستگی و مسیر بازگشت.
در Resource Governor معیار اصلی فقط زمان پاسخ نیست. CPU، حافظه، Compile، صف درخواست، تعداد Session و هزینه نگهداری باید همزمان دیده شوند. یک بهبود محلی ممکن است فشار را به بخش دیگری منتقل کند.
برای تحلیل معتبر، Query Store یا Snapshotهای DMV را در بازههای همسان نگه دارید و تغییرات Deployment را کنار داده Performance ثبت کنید. Polling سنگین خود میتواند اندازهگیری را منحرف کند.
Best Practices
- برای هر تغییر یک فرضیه قابل آزمون بنویسید.
- عضو مناسب را از جدول مقایسه انتخاب و آموزش مستقل آن را مطالعه کنید.
- تغییر را کوچک، قابل برگشت و زمانبندیشده نگه دارید.
- تعریف کاتالوگی و رفتار Runtime را با هم کنترل کنید.
- پس از موفقیت، Runbook و مالک نگهداری را ثبت کنید.
پنل تصمیم نهایی برای Resource Governor خطاهای طراحی را با مسیر اندازهگیری، کنترل ریسک و انتخاب Best Path مقایسه میکند.
سؤالات متداول
برای شروع کار با Resource Governor چه پیشنیازی لازم است؟
پیش از اجرا، نسخه و Edition، سطح دسترسی، وضعیت پایگاه داده و یک محیط آزمایشی همسان با Production را بررسی کنید. برای Resource Governor ثبت Baseline اولیه باعث میشود تغییر واقعی از نوسان عادی جدا شود.
چگونه صحت پیکربندی Resource Governor را بررسی کنیم؟
تعریف کاتالوگی را با نمای Runtime مقایسه کنید، سپس یک سناریوی کنترلشده اجرا و نتیجه را در بازه زمانی مشخص ثبت کنید. اتکا به یک Snapshot برای قضاوت درباره Resource Governor کافی نیست.
Resource Governor در چه پروژههایی ارزش تجاری بیشتری ایجاد میکند؟
در سامانههایی که تأخیر، پایداری و تفکیک بارکاری مستقیماً بر درآمد یا SLA اثر دارد، Resource Governor میتواند ارزش بیشتری ایجاد کند؛ البته نتیجه باید با شاخص قابل اندازهگیری تأیید شود.
چه زمانی هزینه نگهداری Resource Governor از منفعت آن بیشتر میشود؟
وقتی حجم عملیات پایین، تیم فاقد مهارت نگهداری یا مسیر بازگشت نامشخص است، پیچیدگی Resource Governor ممکن است توجیه نداشته باشد. تصمیم باید بر هزینه کل مالکیت استوار باشد.
Resource Governor با روش جایگزین در SQL Server چه تفاوتی دارد؟
روش جایگزین معمولاً Scope، هزینه اجرا و میزان کنترل متفاوتی دارد. مقایسه درست باید روی Workload واقعی، Plan یا مصرف منابع و نه صرفاً زمان یک Query انجام شود.
برای پیادهسازی حرفهای Resource Governor چه خدماتی لازم است؟
تحلیل Workload، طراحی آزمایش، پیادهسازی مرحلهای، مستندسازی، آموزش تیم و پایش پس از انتشار اجزای اصلی خدمت حرفهای هستند؛ اجرای مستقیم در Production بدون این زنجیره پرریسک است.
رایجترین خطای عملیاتی در Resource Governor چیست؟
خطای رایج، اعمال تنظیم بدون اندازهگیری وضعیت پایه و بدون کنترل وابستگیهاست. در Resource Governor ابتدا Scope را محدود کنید و هر تغییر را با یک معیار موفقیت و یک شرط توقف همراه سازید.
اثر Resource Governor بر Performance چگونه اندازهگیری میشود؟
شاخص مناسب به موضوع بستگی دارد، اما زمان پاسخ، CPU، Memory، تعداد اجرای موفق، صف انتظار و تغییر Plan از معیارهای رایجاند. مقایسه باید در پنجره بار مشابه انجام شود.
بهترین روش مستندسازی و Rollback برای Resource Governor چیست؟
نام اشیا، دلیل تغییر، مقدار قبل و بعد، مالک تصمیم، زمان اعمال، Query اعتبارسنجی و فرمان بازگشت را در Runbook ثبت کنید تا Resource Governor به تنظیمی ناشناخته تبدیل نشود.
Resource Governor با کدام نسخههای SQL Server سازگار است؟
قابلیت دقیق میتواند بین نسخهها و محیطهای Azure تفاوت داشته باشد. مستندات همان نسخه را بررسی و Syntax را روی محیط Test اجرا کنید؛ از تعمیم رفتار نسخه جدید به سرور قدیمی پرهیز شود.
سؤالات مصاحبه
- چگونه تشخیص میدهید Resource Governor واقعاً روی Workload اثر گذاشته است؟
- اگر پس از اعمال Resource Governor وضعیت بدتر شد، ترتیب عیبیابی شما چیست؟
- چه تفاوتی میان تعریف کاتالوگی و وضعیت Runtime در Resource Governor وجود دارد؟
- برای جلوگیری از تغییرات ناخواسته در Resource Governor چه کنترلهایی میگذارید؟
- چه زمانی تصمیم میگیرید Resource Governor را حذف یا به روش دیگری مهاجرت دهید؟
چکلیست نهایی
- فهرست اعضای خانواده و نقش هرکدام را مشخص کنید.
- Baseline را قبل از تغییر ثبت کنید.
- Permission و سازگاری نسخه را بررسی کنید.
- لینک آموزش مستقل عضو انتخابی را مطالعه کنید.
- Query اعتبارسنجی و Rollback را آماده کنید.
- نتیجه و هزینه جانبی را در Runbook بنویسید.
جمعبندی و مسیر ادامه
Resource Governor یک مجموعه ابزار مرتبط است، نه یک تنظیم جادویی. مسیر درست از تعریف مسئله، انتخاب عضو مناسب، آزمایش کنترلشده و مشاهده Runtime عبور میکند. برای ادامه، یکی از آموزشهای زیر را بر اساس مسئله واقعی خود انتخاب کنید.
خدمات برنامهنویسی و پایگاه داده
برنامهنویسی در اصفهان؛ قبول سفارشهای برنامهنویسی و پایگاه داده با شماره 09131253620. انجام پروژه، آموزش برنامهنویسی و آموزش SQL Server با رویکرد حرفهای و قابل پشتیبانی.
مجموعهای معتبر با سابقه فعالیت حرفهای از سال ۱۳۷۵ شمسی تاکنون در طراحی سامانههای تحت وب، وبسایت، پایگاه داده و راهکارهای نرمافزاری فعالیت میکند.
برای سفارش پروژههای جدید با ایتا، واتساپ و تماس مستقیم: +989131253620 ارتباط بگیرید یا صفحه تماس با ما را ببینید.