SQL Server - 当另一个进程需要内存时,它是否真的会释放内存?

3
我们有一台8核,16GB内存的服务器,上面运行着SQL Server 2008。当我们执行数百万行的大型查询时,内存使用量会飙升到15.7GB,然后甚至文件浏览、打开Excel等操作也变得非常缓慢。
那么,当另一个进程需要内存时,SQL Server是否真正释放内存,或者我遇到了其他问题?我们没有在此服务器上运行任何其他重要程序。
我们已将SQL Server的最大内存使用量设置为14GB。
感谢所有人提供任何启示或故障排除想法。
2个回答

8
是的,它有这个功能。查看SQLOS的内存管理器:响应内存压力了解详情。但是,什么是“内存压力”取决于机器和操作系统的版本,详见Q&A: SQL Server是否总是响应内存压力?。如果您想要为应用程序保留更多的内存(我甚至不想问为什么您在专用于SQL Server的机器上浏览文件并使用Excel……),那么您应该降低最大服务器内存,直到留出足够的空间供娱乐使用。

0

SQL Server不会释放内存。它会尽可能地占用所有可用的内存,直到达到MaxMemory设置的上限,并一直保持在那里。


真的吗?你有确认这个的链接吗? - Abs
这个程序相关的内容翻译成中文:这样做可以吗?http://serverfault.com/questions/1279/reclaiming-memory-from-sql-server 如果你想释放内存,你必须降低最大内存设置。 - Mladen Prajdic
那个链接并没有提到 SQL Server 不会释放内存,而是会消耗它所需的所有内存。在你的回答中,你基本上是在说即使操作系统指示另一个进程需要这个内存,它也永远不会释放内存? - Abs
Mladen 是错误的。如果被允许(在服务器级别上设置),它是可以释放并且将会释放的。 - TomTom
好的,也许我应该更清楚地表达。如果SQL Server遇到内存压力,操作系统会强制其释放内存。但是,如果SQL Server使用频繁,当内存压力消失时,内存将再次增加。这是增加更多RAM的典型情况。 - Mladen Prajdic
@TomTom,你在谈论哪个服务器级别的设置?最大和最小内存? - Mladen Prajdic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接