解决由于AUTO SHRINK导致的内存问题?

时间:2016-05-09 15:35:29

标签: sql-server sql-server-2008-r2 shrink

在实现数据库打开自动缩小选项后,我搜索了它,我意识到关闭它是一个好习惯(有很多网页建议这样做,如this one),因为自动缩小是一般认为会导致性能问题

所以我跑

ALTER DATABASE MyDatabase SET AUTO_SHRINK OFF WITH NO_WAIT'

我意识到在此之后,SQL Server的RAM使用率要高得多,最终会通过减慢整个服务器的速度来写入交换文件。

导致此内存问题的原因是什么?在普通数据库上关闭自动收缩是不是一个好习惯(这是一个客户端服务器ERP应用程序的数据库,因此主要用于读取数据并且写入频率较低)。

我意识到当此数据库是sql server 2000数据库时可能设置了自动收缩(当时可能是默认值为True),而且默认情况下,sql serveer 2008 R2中的新数据库的AutoShrink为False。

我应该再次设置AutoShrink吗?当然,我可以通过反复试验来做,但我要求找到一个技术原因,说明为什么自动收缩会导致内存问题。

1 个答案:

答案 0 :(得分:1)

  

我意识到在此之后,SQL Server的RAM使用率要高得多,最终会通过减慢整个服务器的速度来写入交换文件。

非常好的做法关闭自动收缩,重新调整内存上升这是不可能的,至少我从未见过这个,也没有人报告过。相反,当自动缩小功能时,可能需要大量I / O才能将内存中的页面执行缩减,并且内存消耗可能会增加。

你提到交换文件写的是什么意思?

  

我应该再次设置AutoShrink吗?当然,我可以通过反复试验来做,但我要求找到一个技术原因,说明为什么自动收缩会导致内存问题。

不要将其设置为ON。必须运行其他查询才能请求大量内存。这是一个完全不同的主题,导致内存上升,我们需要找到它。

select @@ Version?

的输出是什么