首先说明,如果单纯的就是内存不断慢慢增高,那您可以看这篇文章。配置一些sql server所占用的最大内存即可解决:
内存占用居高不下
现象:
1.重启sql服务后,sql服务以没秒100M的速度在吞噬着内存
2.用管理工具登录sql发现非常卡,很难连接进去(运行这么大的内存,当然很卡)
降内存的办法
解决的原理就是控制sqlserver消耗内存与释放内存的原因,经查文献和试验可知,SQL Server对服务器内存的使用策略是用多少内存就占用多少内存,只用在服务器内存不足时,才会释放一点占用的内存,至少释放多少,完全由sql server控制,所以SQL Server 服务器内存往往会占用很高。
SQL Server提供数据库脚本查徇内存占用情况
sql script: DBCC MemoryStatus
这些内存一般都是Sql Server运行时候用作缓存的:
数据缓存:执行查询语句,Sql Server会将相关的数据内容(Sql Server操作的数据都是以页为单位的)加载到内存中进行缓存,以便于再次请求此页的数据的时候,直接从内存返回,大大提高了提取效率。
执行命令缓存:在执行存储过程,自定函数时,Sql Server需要先二进制编译再运行,编译后的结果也会缓存起来, 再次调用时就无需再次编译。
其它DBCC管理命令
DBCC FREEPROCCACHE 清除存储过程相关的缓存
DBCC FREESESSIONCACHE 会话缓存
DBCC FREESYSTEMCACHE(‘All’) 系统缓存
DBCC DROPCLEANBUFFERS 所有缓存
以上命令虽然会清除掉现有缓存,为新的缓存腾出空间,但是Sql server并不会因此释放掉已经占用的内存。Sql Server并没有提供任何命令允许我们释放不用到的内存。因此我们只能通过动态调整Sql Server可用的物理内存设置来强迫它释放内存。
步骤:
按以上步骤,设置sql占用内存的上限,就会让sqlserver在内存上限范围内,主动清除脏数据替换成热数据,不至少向吸血鬼一样,无休止占用内存。
文章来源:https://www.cnaaa.net,转载请注明出处:https://www.cnaaa.net/archives/6247