۱۳۸۷/۱۱/۰۶

تنظيمات پيشنهادي حداكثر حافظه‌ي مصرفي اس كيوال سرور


به صورت پيش فرض تنظيمات حافظه‌ي اس كيوال سرور به صورتي است كه به آن اجازه مي‌دهد تمامي حافظه‌ي مهياي سيستم عامل را مصرف كند! اگر شخصي با اين مساله آشنايي نداشته باشد احتمالا تصور خواهد كرد كه اس كيوال سرور نشتي حافظه دارد يا كلا مشكلي در سيستم روي داده است كه تا اين حد مصرف حافظه بالا رفته است.
براي مشاهده‌ي اين تنظيمات روي instance سرور مورد نظر كليك راست كرده و گزينه خواص را انتخاب كنيد. سپس در صفحه‌ي باز شده گزينه memory را مشاهده نمائيد.
البته اين‌كار را با استفاده از دستورات T-SQL هم مي‌توان انجام داد:

EXEC sp_configure 'show advanced options', 1
RECONFIGURE WITH OVERRIDE

EXEC sp_configure 'max server memory (MB)'

EXEC sp_configure 'show advanced options', 0
RECONFIGURE WITH OVERRIDE

نتيجه‌ي آن بر روي سيستم برنامه نويسي من به صورت زير است:



كه البته عمدا آن‌را بر روي يك گيگ تنظيم كرده‌ام تا عملكرد سيستم مختل نشود. (چون اگر غير از اين باشد، تعارفي نداشته و هر آنچه را كه صلاح بداند مصرف مي‌كند!)
كمي در بلاگ‌هاي رسمي برنامه نويس‌هاي اس كيوال سرور در سايت MSDN در اين‌‌باره جستجو كردم و نتيجه آن به صورت زير است:

تنظيمات حداكثر حافظه‌ي مصرفي اس كيوال سرورهاي 2005 و 2008
براي يك سيستم عامل 64 بيتي:

Physical RAM MaxMem Setting
2GB 1500
4GB 3200
6GB 4800
8GB 6700
12GB 10600
16GB 14500
24GB 22400
32GB 30000
48GB 45000
64GB 59000


براي سروري 32 بيتي اين اعداد حداكثر را تقريبا منهاي 300 مگابايت نمائيد. (و البته همانطور كه مطلع هستيد در سيستم عامل‌هاي سرور 32 بيتي، اگر بيشتر از 2 گيگا بايت رم داشتيد سوئيچ 3GB و اگر بيشتر از 4 گيگابايت رم مهيا بود، سوئيچ PAE بايد در boot.ini تنظيم شوند. در غير اينصورت هزينه‌ي سخت افزاري بيهوده‌اي را متحمل شده‌ايد، زيرا استفاده‌ي بهينه‌اي از آن در يك سيستم عامل 32 بيتي نخواهد شد)

و اين اعداد را همانطور كه ذكر شد، در تنظيمات سرور مي‌توان وارد نمود ( از طريق management studio ) و يا با استفاده از دستورات T-SQL نيز اين امر ميسر است: (در مثال زير حداكثر حافظه مجاز مصرفي به 2300 مگابايت تنظيم مي‌شود)

EXEC sp_configure 'show advanced options', 1
RECONFIGURE WITH OVERRIDE

EXEC sp_configure 'max server memory (MB)', 2300

EXEC sp_configure 'show advanced options', 0
RECONFIGURE WITH OVERRIDE

و البته لازم به ذكر است كه اعداد فوق براي حالتي پيشنهاد شده است كه سرور مورد نظر فقط يك كار و آن‌هم اجرا و سرويس دهي اس كيوال سرور را به عهده داشته باشد. بديهي است اگر از اين سرور استفاده‌هاي ديگري هم مي‌شود اين اعداد را بايد كمتر نيز در نظر گرفت.


براي مطالعه‌ي بيشتر
http://sqlnerd.blogspot.com/2006/07/memory-use-in-sql-server.html
http://blogs.msdn.com/axperf/archive/2008/03/10/welcome-database-configuration-checklist-part-1.aspx
http://technet.microsoft.com/en-us/library/bb124810.aspx