释放SQL Server占用的内存
服务器维护中过程中,经常碰到SQL SERVER 内存占用高的问题,让人非常头疼。
第一种方法,可以通过重启SQL SERVER服务释放内存,但是生产服务器环境一般不允许随便重启 SQL SERVER服务。
第二种方法,通过设置服务器最高内存值的方法来释放内存,具体操作是先把服务器最大内存设置成一个小值,但不能太小,太小容易使SQL SERVER挂掉,然后再把服务器最大内存值设置回合适的值,建议占服务器总内存的80%。
第三种方法,通过定时服务定时检查并自动强制释放内存。
原因分析
由于Sql Server对于系统内存的管理策略是有多少占多少,除非系统内存不够用了(大约到剩余内存为4M左右),Sql Server才会释放一点点内存。所以很多时候,我们会发现运行Sql Server的系统内存往往居高不下。
这些内存一般都是Sql Server运行时候用作缓存的,例如你运行一个select语句,那么Sql Server会将相关的数据页(Sql Server操作的数据都是以页为单位的)加载到内存中来,下一次如果再次请求此页的数据的时候,就无需读取磁盘了,大大提高了速度。这类的缓存叫做数据缓存。还有一些其他类型的缓存,如执行存储过程时,Sql Server需要先编译再运行,编译后的结果也会缓存起来,下一次就无需再次编译了。如果这些缓存已经不需