在实现数据库打开自动缩小选项后,我搜索了它,我意识到关闭它是一个好习惯(有很多网页建议这样做,如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吗?当然,我可以通过反复试验来做,但我要求找到一个技术原因,说明为什么自动收缩会导致内存问题。
答案 0 :(得分:1)
我意识到在此之后,SQL Server的RAM使用率要高得多,最终会通过减慢整个服务器的速度来写入交换文件。
非常好的做法关闭自动收缩,重新调整内存上升这是不可能的,至少我从未见过这个,也没有人报告过。相反,当自动缩小功能时,可能需要大量I / O才能将内存中的页面执行缩减,并且内存消耗可能会增加。
你提到交换文件写的是什么意思?
我应该再次设置AutoShrink吗?当然,我可以通过反复试验来做,但我要求找到一个技术原因,说明为什么自动收缩会导致内存问题。
不要将其设置为ON。必须运行其他查询才能请求大量内存。这是一个完全不同的主题,导致内存上升,我们需要找到它。
select @@ Version?
的输出是什么