SQL Server对服务器内存的使用策略是用多少内存就占用多少内存,只用在服务器内存不足时,才会释放一点占用的内存,至少释放多少,完全由sql server控制,所以SQL Server 服务器内存往往会占用很高。
SQL Server提供数据库脚本查徇内存占用情况
DBCC MemoryStatus
这些内存一般都是Sql Server运行时候用作缓存的:
-
数据缓存:执行查询语句,Sql Server会将相关的数据内容(Sql Server操作的数据都是以页为单位的)加载到内存中进行缓存,以便于再次请求此页的数据的时候,直接从内存返回,大大提高了提取效率。
-
执行命令缓存:在执行存储过程,自定函数时,Sql Server需要先二进制编译再运行,编译后的结果也会缓存起来,再次调用时就无需再次编译。
其它DBCC管理命令
DBCC FREEPROCCACHE 清除存储过程相关的缓存
DBCC REESESSIONCACHE 会话缓存
DBCC FREESYSTEMCACHE(‘All’) 系统缓存
DBCC DROPCLEANBUFFERS 所有缓存
以上命令虽然会清除掉现有缓存,为新的缓存腾出空间,但是Sql server并不会因此释放掉已经占用的内存。Sql Server并没有提供任何命令允许我们释放不用到的内存。因此我们只能通过动态调整Sql Server可用的物理内存设置来强迫它释放内存。
按以上步骤,设置sql占用内存的上限,就会让sql server在内存上限范围内,主动清除脏数据替换成热数据,不至少向吸血鬼一样,无休止占用内在。
sql server windows nt 64bit 占内存解决方法:
1、限制Sql Server可用的物理内存设置步骤:
2、找到你本地服务。
找到SQL Server (MSSSQLSERVER)
右键重新启动。