کنترل حافظهی مصرفی اس کیوال سرور
مایکروسافت انجین اس کیو ال سرور به صورتی طراحی کرده که هرچقدر میزان RAM برای سرور اختصاص داده شده است را برای بهبود عملکرد کوئری ها رزرو کرده و حداکثر رم را از آن خود کند ، اگر دیتابیس سرور و اپلیکیشن سرور شما در یک VM باشد این موضوع چندان خوشایند نیست (البته در نظر داشته باشید بهترین حالت جداسازی سرور اپلیکیشن از سرور دیتابیس می باشد) ، چرا که ممکن است در حالت پیک کاری برنامه با مشکل مواجه شود ، بسیاری از همکاران شبکه ممکن است با این موضوع آشنایی نداشته باشند و فکر کنند Sql Server دچار مشکل شده و بیش از حد رم میخورد در صورتی که انجین SQL Server نتیجه کوئری ها را در حافظه رم تا زمانی که Session ها به سرور باز هستند نگهداری میکند تا در مراجعه بعدی با سرعت خیلی بالاتری اطلاعات در خروجی نمایش داده شوند (این یکی از دلایلی است که اس کیو ال رم سرور را رزرو می کند) .
برای مشاهده تنظیمات جاری بر روی instance راست کلیک کرده و Properties را بزنید و در فیلد memory میزان حداکثر رم سرور را ببینید و همچنین با استفاده از اسکریپت زیر می توانید تنظیمات انجام شده حداقل و حداکثر رم قابل استفاده Sql Server را مشاهده کنید :
SELECT [name], [value], [value_in_use]
FROM sys.configurations
WHERE [name] = 'max server memory (MB)' OR [name] = 'min server memory (MB)';
در بالا نتیجه خروجی اسکریپت بالا را مشاهده میکنید که بر روی یکی از سرورهای موجود در دست تیم ما رو مشاهده میکنید که رم سرور 1 ترابایت بوده ولی ما حداکثر رم سرور را بر روی 960 گیگابایت محدود کرده ایم .
تنظیم مجدد میزان رم سرور اس کیو ال
از مسیری که در بالاتر ذکر شد می توان در فیلد Maximum server memory حداکثر میزان قابل استفاده رم سرور توسط sql server را محدود کرد زیرا اگر این محدودیت را اعمال نکنیم Core اس کیو ال بدون هیچ گونه تعارفی تمامی رم سرور را بیت به بیت رزرو کرده و اگر بر روی این سرو اپلیکیشن ما نیز وجود داشته باشد در پرفورمنس برنامه ما تاثیر شدیدی می گذارد ، البته لازم به ذکر است که یکی از بزرگترین اشتباهات ما این است که سرور اپلیکیشن و دیتابیس یکجا باشد که اصلا این مورد توصیه نمی شود .
همچنین با استفاده از اسکریپت زیر نیز می توانید این محدودیت را اعمال کنید .
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'max server memory', 4096;
GO
RECONFIGURE;
GO
دقت کنید که پارامتر پراسیجر بالا بر اساس مگابایتمی باشد به طور مثال در بالا 4096 معال 4 گیگابایت می باشد .
The following table shows the automatically configured number of max worker threads (when value is set to 0) based on various combinations of CPUs, computer architecture, and versions of SQL Server, using the formula: Default Max Workers + ((logical CPUs – 4) * Workers per CPU).
کنترل حافظهی مصرفی SQL Server بسیار مهم است تا بهرهوری و عملکرد بهتری از سرور خود داشته باشید. در ادامه، تعدادی روش برای کنترل حافظهی مصرفی SQL Server آورده شده است:
1. پیکربندی حداکثر حافظه: در SQL Server، میتوانید حداکثر حافظه مصرفی توسط سرور را تعیین کنید. این مقدار با استفاده از تنظیمات موجود در SQL Server Configuration Manager یا با استفاده از دستورات ترمینالی قابل تعیین است. با تعیین یک حداکثر حافظه، میتوانید جلوی مصرف بیش از حد حافظه توسط SQL Server را بگیرید و منابع سیستم را بهینهتر مدیریت کنید.
2. مدیریت حافظههای داخلی SQL Server: در SQL Server، میتوانید مدیریت دقیقتری روی حافظههای داخلی مانند پندولینگ (Pinning) و قفل (Locking) داشته باشید. با استفاده از این ابزارها، میتوانید کنترل بیشتری روی حافظههای داخلی SQL Server داشته و بهرهوری بیشتری را از آنها ببرید.
3. بهینهسازی کوئریها: یکی از دلایل اصلی مصرف بیش از حد حافظه در SQL Server، اجرای کوئریهای پرمصرف است. با بهینهسازی کوئریهای خود، میتوانید مصرف حافظه را کاهش داده و عملکرد سرور را بهبود بخشید. استفاده از نمایهها، توضیح دادن جداول بهینه، استفاده از محدودیتها و فیلترها، و استفاده از نحوهنویسی مناسب در کوئریها از جمله روشهایی است که میتوانید برای بهینهسازی کوئریها و کاهش مصرف حافظه استفاده کنید
.
4. مدیریت حافظه خارجی: در صورتی که سرور SQL Server شما بر روی سیستمعامل Windows اجرا میشود، میتوانید با استفاده از ابزارهای مدیریت حافظه سیستمعامل مانند Windows Task Manager یا Resource Monitor، مصرف حافظه توسط پروسه SQL Server را نظارت کنید و در صورت لزوم اقدام به بهینهسازی یا تنظیم مجدد کنید.
5. نظارت و ردیابی: برای کنترل حافظه مصرفی SQL Server، باید به صورت مداوم نظارت و ردیابی انجام دهید. با استفاده از ابزارهای نظارت مانند SQL Server Profiler، Extended Events و Dynamic Management Views (DMVs)، میتوانید عملکرد حافظه را مشاهده و مشکلات را شناسایی کنید.
با رعایت این روشها و استفاده از ابزارها و تنظیمات مناسب، میتوانید کنترل بهتری بر روی حافظه مصرفی SQL Server داشته باشید و از عملکرد بهتر و بهرهوری بیشتر سرور خود بهرهبرداری کنید.
دیدگاه ها 1