نیما جمشیدی
نیما جمشیدی
خواندن ۱ دقیقه·۴ سال پیش

قابلیت Adaptive Memory Grants در SQL Server

در مجموعه قابلیت های adaptive-query-processing که سعی کردیم به اون بپردازیم ، Adaptive Memory یکی از موثرترین های این مجموعه است. درادامه مفهوم این قابلیت رو به همراه تاثیر اون در بهبود اجرا کوئری در پایگاه داده SQL Server رو مورد بررسی قرار می دیم.

اجرا ء کوئری در صورتی که شامل عملیات های sort و hash join  باشه نیاز به مموری جهت نگهداری رکوردها داره که  SQL Server میزان مموری لازم برای انجام این عملیات رو حدس میزنه و به همان میزان مموری allocate  میکنه ( Granted Memory ).


گاهی پیش میاد که میزان مموری allocate شده اشتباه باشه، در صورت کم بودن مموری، کوئری برای اجرا سراغ tempdb  میره و از دیسک کمک می گیره که کارایی پایینی داره.

در بخش  MemoryGrantInfo مربوط به جزئیات Query plan علاوه بر  Granted Memory پارامتر جدیدی با عنوان IsMemoryGrantFeedbackAjusted  اضافه شده که میتونه مقادیر :   No : First time   ,      Yes: adjusting ,    Yes: Stable  رو داشته باشه .

قابلیت اضافه شده این امکان رو میده تا درصورتی که در دفعات بعد اجرا کوئری، شرایط اجرا عوض شد و میزان مموری مورد نیاز کوئری تغییر شدیدی کرد (کاهش یا افزایش )، SQL Server به صورت خودکار این رو تشخیص بده و برای دفعات بعد مموری  allocate  شده  رو اصلاح کنه. به این معنی خواهد بود که بار اول اجرا کوئری با شرایط جدید، همچنان کندی خواهیم داشت اما با تشخیص  No : First time  اقدام به اصلاح مموری کرده و دفعات بعد مشکل کندی حل میشه .

منبع :

www.brentozar.com

sql servertempdbسرعتperformanceپایگاه داده
مدیر پایگاه داده در ایپاد
شاید از این پست‌ها خوشتان بیاید