一、问题
1.1、SQL Server内存占用高 ,内存不释放
1.2、SQL Server 内存使用策略
SQL Server对服务器内存的使用策略是有多少占多少(大约到剩余内存为4M左右)只用在服务器内存不足时,
才会释放一点占用的内存,所以很多时候,我们会发现运行SQL Server的系统内存往往居高不下这些内存一般都
是SQL Server运行时候用作缓存的。
数据缓存:
例如:你运行一个select语句,那么SQL Server会将相关的数据页(SQL Server操作的数据都是以页为单位的,在
SQL Server中页的大小始终是8kb的大小,页有不同的类型:数据页,索引页,系统页等等)加载到内存中进行
缓存,以便于再次请求此页的数据的时候,直接从内存返回,就无需读取磁盘了,大大提高了速度。
执行命令缓存:
如执行存储过程,自定函数时,SQL Server 需要先二进制编译再运行,编译后的结果也会缓存起来,再次调用时就无需再次编译。
二、解决办法
当我们知道SQL Server 内存占用方式,就有以下两种解决办法
-
清除缓存
-- 查看内存使用情况,这个会返回多个结果集数据,可以有助于我们排查内存问题
DBCC MemoryStatus
结果集部分重要指标解释(请注意,DBCC MEMORYSTATUS
的输出格式和内容可能会随着SQL Server版本的不同而有所变化)&#