Resource Governor چیست؟ آشنایی با نحوه پیکربندی و اهمیت های آن

Resource Governor چیست؟ آشنایی با نحوه پیکربندی و اهمیت های آن

نوشته شده توسط: تیم فنی نیک آموز
تاریخ انتشار: ۰۸ مهر ۱۴۰۳
آخرین بروزرسانی: ۰۷ مهر ۱۴۰۳
زمان مطالعه: 13 دقیقه
۱
(۱)

Resource Governor چیست؟ این قابلیت در SQL Server مثل یک مدیر ماهر برای منابع سرور عمل می‌کند. فرض کنید در SQL Server شما چندین برنامه به‌طور همزمان اجرا می‌شود. چطور مطمئن می‌شوید هر برنامه سهم عادلانه‌ای از منابع سرور را دریافت می‌کند و هیچ برنامه‌ای باعث کند شدن سایر برنامه‌ها نمی‌شود؟ اینجاست که ابزار مدیریتی SQL Server به کمک شما می‌آید. در این مطلب، به بررسی کامل این قابلیت خواهیم پرداخت. با خواندن این مقاله صفر تا صد کارکرد Resource Governor در SQL Server را خواهید فهمید.

Resource Governor چیست؟

Resource Governor ابزار مدیریت منابع SQL Server است که به شما کمک می‌کند تا مدیریت بهتری بر اقدامات SQL Server و مصرف منابع سیستم داشته باشید. با این کار می‌توانید میزان مصرف منابع CPU، حافظه و I/O فیزیکی را توسط درخواست‌های ورودی از برنامه‌های کاربردی، محدود کنید. به عبارت دیگر، این ابزار مدیریتی به شما کمک می‌کند تا کنترل بیشتری روی نحوه مصرف منابع توسط نرم‌افزارهای مختلف روی پایگاه داده داشته باشید.

اهمیت Resource Governor چیست؟

با استفاده از این فناوری در SQL Server می‌توانید:

  • منابع را بین کاربران مختلف تقسیم کنید

فرض کنید یک سرور SQL Server دارید که چندین کاربر با نیازهای مختلف از آن استفاده می‌کنند. Resource Governor به شما این امکان را می‌دهد که منابع سرور را به بخش‌های مختلفی تقسیم کنید تا هر کاربر سهم مشخصی از CPU، حافظه و I/O داشته باشد؛ درنتیجه کارها و عملکرد یک کاربر روی سرور، بر عملکرد کارهای دیگر کاربران تاثیر نمی‌گذارد.

  • عملکرد قابل پیش‌بینی برای کاربران مختلف داشته باشید

با Resource Governor مطمئن می‌شوید عملکرد نرم‌افزار برای هر کاربر در یک سطح مشخص باقی می‌ماند. این موضوع به‌ویژه برای سناریوهایی که در آن‌ها برای کاربران مختلف، SLA (تعهد سطح خدمات) تعریف کردید، اهمیت دارد.

  • جلوی کوئری‌های سنگین را بگیرید

گاهی اوقات ممکن است کاربری یک کوئری بسیار سنگین اجرا کند که کل منابع سرور را اشغال کند. Resource Governor به شما این امکان را می‌دهد که جلوی چنین کوئری‌هایی را گرفته یا میزان استفاده آن‌ها از منابع را محدود کنید. همچنین می‌توانید منابع I/O را برای عملیات‌هایی مانند DBCC CHECKDB که می‌توانند سیستم I/O را اشباع کنند، محدود کنید.

  • مصرف منابع را به‌راحتی پیگیری کنید

این قابلیت به شما این امکان را می‌دهد که به‌طور دقیق ببینید هر کاربر چه میزان از منابع سرور را مصرف می‌کند. این اطلاعات را می‌توانید برای محاسبه‌ هزینه‌ها و صدور صورت‌حساب برای کاربران مختلف استفاده کنید.

اصطلاحات و نقش های Resource Governor چیست؟

این فناوری SQL Server با استفاده از سه عنصر کلیدی، بهینه بودن عملکرد سرور را تضمین می‌کند:

۱. مخزن منابع (Resource Pools)

این مخزن‌ها مانند سرورهای مجازی درون SQL Server عمل می‌کنند. شما می‌توانید منابع فیزیکی سرور را بین مخزن‌های مختلف تقسیم کنید. SQL Server به‌طور پیش فرض دو مخزن داخلی و پیش‌فرض دارد. همچنین امکان تعریف مخزن‌های اختصاصی برای کاربران خاص نیز وجود دارد.

۲. گروه‌های کاری (Workload Groups)

این گروه‌ها به منزله دسته‌بندی برای درخواست‌های کاربران هستند. شما می‌توانید باتوجه به سشن‌های مشترک، درخواست‌های کاربران را در گروه‌های کاری مختلف قرار دهید. این کار به شما امکان می‌دهد تا عملکرد هر گروه را به‌طور جداگانه مانیتور کرده و سیاست‌های خاصی را برای آن‌ها تعریف کنید. SQL Server به‌طور پیش‌فرض دو گروه داخلی و پیش فرض ایجاد می‌کند و آن‌ها را به مخزن‌های منابع مربوطه اختصاص می‌دهد. مشابه مخزن منابع، امکان ایجاد گروه‌های کاری اختصاصی برای سناریوهای خاص نیز وجود دارد.

۳. طبقه‌بندی (Classification)

این فرآیند، درخواست‌های کاربران را براساس ویژگی‌های آن‌ها به یک گروه کاری خاص اختصاص می‌دهد. شما می‌توانید با نوشتن یک تابع طبقه‌بندی (Classifier Function) سفارشی، این فرآیند را شخصی‌سازی کنید. Resource Governor از این تابع برای تعیین هر درخواست به گروه کاری خاص استفاده می‌کند.

 

طبقه‌بندی (Classification)

 

Resource Governor چگونه کار می‌کند؟

برای درک بهتر، اجازه دهید نحوه کار آن را با یک مثال ترکیبی از اصطلاحات قسمت قبل بررسی کنیم:

فرض کنید پایگاه‌داده شما مثل یک رستوران شلوغ است که باید به مشتریان مختلف (یا همان سشن‌ها در SQL Server) با سفارش‌های متنوع (Workload) سرویس‌دهی کند. Resource Governor در SQL Server حکم یک سیستم هوشمند برای مدیریت این حجم از سفارشات را دارد.

  • نقش طبقه‌بندی‌کننده (Classifier): دسته‌بندی مشتریان رستوران

این شخصیت شبیه یک دربان باهوش عمل می‌کند. او با بررسی هر درخواست جدید (که از طرف کاربر یا نرم‌افزار Session ۱ از n تا n ارسال می‌شود)، براساس معیارهای از پیش تعیین‌شده، آن را دسته‌بندی می‌کند. این معیارها شامل نام کاربری، نقش‌های سیستمی یا دیتابیسی کاربر و حتی اسم نرم‌افزاری بوده که با آن به پایگاه‌داده وصل شده است.

 

طبقه بندی مشتریان رستوران

 

  • نقش گروه کاری (Workload Group): ارسال درخواست به بخش‌ های مختلف رستوران 

حالا که درخواست دسته‌بندی شد، نوبت به گروه‌های کاری می‌رسد. این گروه‌ها شبیه بخش‌های مختلف رستوران هستند.(مثلا فست‌فود، غذای گیاهی، غذای محلی). درخواست براساس دسته‌بندی که Classifier انجام داده، به یک گروه کاری خاص فرستاده می‌شود. مثلا فرض کنید گروه کاری شماره ۴ برای درخواست‌های کوچک و فوری درنظر گرفته شده باشد.

  • نقش استخر منابع (Resource Pool): آشپزخانه‌ رستوران 

هر گروه کاری به یک استخر منابع متصل است. این استخرها شبیه آشپزخانه‌های مجهز هستند که منابعی مانند CPU، حافظه و غیره را در اختیار دارند. استخر منابع، میزان منابع در اختیار هر گروه کاری را مدیریت می‌کند و جلوی مصرف بیش از حد را می‌گیرد تا همه گروه‌ها به شکل روان به کار خود برسند.

Resource Governor به شما امکان می‌دهد برای هر گروه از درخواست‌های شبیه به هم محدودیت‌هایی برای مصرف منابع CPU، حافظه و I/O فیزیکی تعیین کنید. این محدودیت‌ها به‌صورت لحظه‌ای قابل تغییر هستند و تاثیر کمی روی عملکرد برنامه‌ها می‌گذارند. 

یعنی Resource Governor نقش یک مدیر کارآمد را بازی می‌کند که با توجه به نیاز و اولویت‌های شما، منابع سرور را بین برنامه‌های مختلف تقسیم می‌کند تا همه کاربران به شکل روان و بدون وقفه به پایگاه‌داده دسترسی داشته باشند. مثل یک مدیر حرفه‌ای رستوران زنجیره‌ای.

مزایای استفاده از Resource Governor چیست؟

مزیت کلیدی این فناوری، انعطاف‌پذیری آن است. شما می‌توانید محدودیت‌های تعریف شده را به‌صورت لحظه‌ای تغییر دهید، بدون اینکه خللی در اجرای کارهای در حال اجرا ایجاد شود. علاوه‌بر این، از دیگر مزایا می‌توان به تأثیر آن بر سرعت SQL Server اشاره کرد. این فناوری با اقدامات زیر موجب بهبود سرعت SQL Server می‌شود.

  • اولویت‌ بندی کارها

شما می‌توانید برای کارهای مهم‌تر، سهم بیشتری از منابع را در نظر بگیرید و از تداخل آن‌ها با سایر کارها جلوگیری کنید. این امر به شما کمک می‌کند تا از دسترسی سریع و روان کاربران یا برنامه‌های مهم به منابع سرور اطمینان حاصل کنید.

  • جلوگیری از کند شدن سرور 

Resource Governor با محدود کردن میزان منابعی که هر کاربر یا برنامه می‌تواند مصرف کند، از اشباع شدن منابع سرور جلوگیری می‌کند. این امر به‌خصوص در سرورهایی که توسط چندین کاربر یا برنامه به‌طور همزمان استفاده می‌شوند، اهمیت بسیار دارد؛ درنتیجه با این کار عملکرد کلی سرور را بهبود می‌بخشد.

  • کنترل دقیق‌تر و بهینه‌سازی منابع

این فناوری با جمع‌آوری داده‌های مربوط به مصرف منابع توسط هر کاربر یا برنامه، به شما کمک می‌کند تا استفاده از منابع را بهینه‌سازی کنید. این داده‌ها را می‌توانید برای شناسایی و رفع ناکارآمدی‌ها در استفاده از منابع و بهبود عملکرد کلی SQL Server مورد استفاده قرار دهید. یعنی به جای مدیریت کلی منابع سرور، مصرف را به‌صورت جزئی‌تر برای هر گروه از برنامه‌ها مدیریت کنید.

محدودیت‌ های Resource Governor  چیست؟

باوجودی که مدیریت منابع در SQL Server یک ابزار قدرتمند به حساب می‌آید، اما چند محدودیت دارد که باید درنظر بگیرید:

  • محدود به انجین دیتابیس

این ابزار فقط برای Resource Governor مربوط به Database Engine در SQL Server کاربرد دارد و برای سرویس‌های تجزیه و تحلیل، سرویس‌های Integration وگزارش‌دهی قابل استفاده نیست.

  • محدودیت مدیریت بین چند SQL Server instances

این ابزار فقط برای نمونه فعلی SQL Server کاربرد دارد و منابع را بین چندین SQL Server instances روی یک سرور نمی‌تواند مدیریت کند.

  • محدودیت در مدیریت حجم کاری OLTP

این ابزار برای مدیریت حجم کاری تراکنش آنلاین (OLTP) مناسب بوده که شامل کوئری‌های کوتاه مدت است. به دلیل ماهیت کوتاه این کوئری‌ها کنترل پهنای باند CPU همیشه دقیق نبوده و ممکن است آمار استفاده از CPU غیرواقعی به‌نظر برسد.

  • محدود بودن کنترل I/O به عملیات کاربر

مدیریت I/O توسط Resource Governor فقط روی عملیات کاربران اعمال می‌شود و شامل وظایف سیستمی مانند نوشتن در لاگ تراکنش (Transaction Log) و عملیات I/O مربوط به Lazy Writer نمی‌شود. ازآن‌جایی که اکثر عملیات نوشتن برعهده وظایف سیستمی، مدیریت منابع اغلب روی عملیات خواندن کاربر تمرکز دارد.

نحوه پیکربندی Resource Governor 

در این بخش از مقاله سراغ نحوه راه‌اندازی و پیکربندی Resource Governor در SQL Server می‌رویم.

نکات مهم قبل از فعال‌سازی Resource Governor

پیش از فعال کردن این قابلیت در SQL Server 2022 نکات زیر را درنظر بگیرید:

  • با فعال کردن Resource Governor، برای تمام اتصالات جدید به سرور، یک Classifier Function اجرا می‌شود. این Classifier نوع و حجم کار هر اتصال را بررسی می‌کند و آن را به یک گروه کاری خاص (Workload Group) اختصاص می‌دهد.
  • پس از فعال کردن آن، محدودیت‌های منابعی که قبلا برای گروه‌های کاری تعریف کردید، اعمال می‌شوند. مثلا اگر برای یک گروه کاری، حداکثر میزان استفاده از CPU را مشخص کرده باشید، با فعال کردن Resource Governor، این محدودیت برای اتصالات جدید در آن گروه اعمال خواهد شد.
  • فعال کردن این قابلیت، روی اتصالاتی که قبل از فعال‌سازی به سرور وصل شدند، تاثیر ندارد. اما هرگونه تغییر در محدودیت‌های منابع که بعد از فعال کردن Resource Governor انجام دهید، روی اتصالات قبلی نیز اعمال می‌شود.
  • برای فعال کردن این ابزار مدیریت منابع، به مجوز CONTROL SERVER نیاز دارید.

نحوه فعال‌سازی Resource Governor 

در این بخش، ازطریق اسکریپت T-SQL دستور زیر را در SQL Server Management Studio 2022 اجرا کنید:

 

ALTER RESOURCE GOVERNOR RECONFIGURE;
GO

 

همچنین برای فعال‌سازی آن می‌توانید ازطریق Object Explorer اقدام کنید. برای این کار، وارد SQL Server Management Studio شوید.

 

فعال‌سازی ازطریق Object Explorer

 

در Object Explorer، قسمت Management را باز کرده و روی Resource Governor راست کلیک کنید. درنهایت با انتخاب گزینه Enable موفق به فعال‌سازی آن خواهید شد.

 

فعال سازی Resource Governor

 

پیکربندی Resource Governor در SQL Server

 برای پیکربندی این ابزار، می‌توانید از یک الگو (Template) آماده در SQL Server Management Studio استفاده کنید.

۱. باز کردن الگو:

  • وارد SQL Server Management Studio شوید.
  • از منوی «View»، گزینه «Template Explorer» را انتخاب کنید.

 

انتخاب Template Explorer

 

  • در پنجره‌ «Template Explorer»، پوشه «Resource Governor» را باز کنید.

 

Resource Governor

 

  • روی گزینه «Configure Resource Governor» دو بار کلیک کنید.

باز کردن Resource Governor

 

۲. اتصال به سرور:

  • اطلاعات اتصال به سرور SQL Server مورد نظر خود را وارد کنید.
  • روی دکمه «OK» کلیک کنید.
  • اکنون الگو با نام «Configure Resource Governor.sql» در پنجره‌ی «Query Editor» باز می‌شود. این الگو به شما کمک می‌کند تا یک استخر منابع (Resource Pool)، یک گروه کاری (Workload Group) و یک تابع طبقه‌بندی (Classifier Function) ایجاد کنید.

 

اتصال به سرور

 

۳. تغییر مقادیر الگو (اختیاری):

  • اگر می‌خواهید تنظیمات پیش‌فرض الگو را تغییر دهید، کلیدهای «CTRL+SHIFT+M» را همزمان فشار دهید.
  • در پنجره‌ باز شده، می‌توانید مقادیر موردنظر خود را برای پارامترهای الگو وارد کنید.
  • برای ذخیره تغییرات، روی دکمه‌ «OK» کلیک کنید.

 

تغییر مقادیر الگو

 

۴. اجرای الگو:

برای اجرای الگو و ایجاد Resource Governor با تنظیمات دلخواه، روی دکمه‌ «Execute» کلیک کنید.

کلام پایانی راجع به Resource Governor

Resource Governor مثل یک رهبر ارکستر عمل می‌کند. همانطور که رهبر ارکستر به هر بخش می‌گوید که چه زمانی و چه‌مدت بنوازند، این ابزار مدیریتی هم به همین شکل عمل می‌کند. در این مقاله به بررسی جامع این قابلیت و نحوه پیکربندی آن پرداختیم. با این ابزار می‌توانید:

  • استفاده کوئری‌ها را از منابع را بهینه‌سازی کنید. 
  • مصرف CPU، حافظه و I/O را برای هر کاربر یا برنامه محدود کنید.
  • کاربران یا برنامه‌های مهم را در اولویت قرار دهید تا به منابع بیشتری دسترسی داشته باشند.

Resource Governor ابزاری قدرتمند برای مدیریت منابع و بهینه‌سازی عملکرد SQL Server است. با استفاده صحیح از این ابزار، می‌توانید سرعت و کارایی سرور خود را به طور قابل‌توجهی افزایش دهید.

چه رتبه ای می‌دهید؟

میانگین ۱ / ۵. از مجموع ۱

اولین نفر باش

title sign
معرفی نویسنده
تیم فنی نیک آموز
مقالات
402 مقاله توسط این نویسنده
محصولات
0 دوره توسط این نویسنده
تیم فنی نیک آموز
title sign
دیدگاه کاربران