SQL 2008 R2 的高内存利用率

SQL 2008 R2 的高内存利用率

我们在 Windows 2008 服务器上安装了 SQL 2008 R2 Enterprise。它有 24 GB 的 RAM。SQL 服务器在优化作业期间占用所有内存,并且在作业完成后不会释放它。唯一的解决办法是重新启动 SQL 服务。请告知如何解决此问题。

答案1

这是设计使然。

SQL Server 会使用其所能获得的所有内存,除非您在其配置中明确限制最大内存使用量;使用完毕后,它不会自动释放内存,因为迟早它必须再次分配内存。但是,如果操作系统需要内存供其他应用程序使用,SQL Server 会很乐意释放内存;因此您不必担心这一点。

如果您认为有必要,可以对最大 SQL Server 内存使用量设置硬限制;这里有一些文档:http://msdn.microsoft.com/en-us/library/ms178067.aspx

答案2

读手册。真的。读手册。

SQL Server 永远不会释放内存。它会缓存数据库中的可用内存,以备日后需要。如果要限制 SQL Server,请在启动参数中设置限制。即便如此,除非其他应用程序需要,否则它也不会释放内存。对于企业级 SQL Server,其他应用程序是空集(即同一台服务器上没有其他应用程序)。

通常,SQL Server 会配置为尽可能充分利用内存。释放内存意味着,如果您需要数据,就必须返回磁盘,而这非常昂贵。因为磁盘 IO 是大型数据库的主要限制因素之一。缓存很好。磁盘很慢。我见过使用 256GB 内存的服务器,用户对此很满意。

因此,如果有意义的话,请获得更多 RAM(32、64GB)。很高兴 SQL Server 充分利用了它。并在某个时候尽快阅读文档 ;)

或者:如果您实际上已将 SQL Server 配置为释放内存并且(!)另一个应用程序请求它但没有得到它 - 向 Microsoft 提出错误。

答案3

这是关于SQL Server 内存配置;它在博客底部讨论了释放内存。

相关内容