2013-02-21 106 views
0

我有SQLServer 2005数据库。 我增加了DB缓冲区大小。执行一个查询,然后sqlserver.exe的mem用法增加,这个 是正常的。在查询之后,数据库处于睡眠模式,但不会降低RAM PF的使用率。我想在查询后,删除mssql缓存。Sqlserver内存大小

查询后,我执行这些: DBCC FREESYSTEMCACHE('SQL Plans'); DBCC FREESESSIONCACHE; DBCC FREEPROCCACHE;

但不降低RAM PF的使用量。我怎样才能做到这一点?

+2

SQL Server被设计为贪心内存。如果它本身要再次使用它,为什么它应该将内存返回给操作系统? – 2013-02-21 07:41:11

+0

下次还增加缓冲区大小,不要在缓冲内存之前使用。 – 2013-02-21 07:43:44

回答

1

正在执行的dbcc语句释放计划高速缓存,而不是缓冲区高速缓存。

尝试使用:

checkpoint 
GO 

dbcc dropcleanbuffers 

即使运行此之后,SQL Server可能不会给内存回来。如果您正在使用动态内存管理(最小服务器内存<最大服务器内存),那么通常只会在存在内存压力时返回。

如果您使用静态分配(最小服务器内存=最大服务器内存),它将永不放弃。

另外,如果你只是在测试的东西搞乱,这个东西没问题。我不会推荐在重要系统上使用它。