释放内存回到服务器对于性能和资源管理非常重要。当你的应用程序运行时,它会占用服务器的内存。如果你的应用程序不及时释放内存,服务器的可用内存将会减少,这可能导致性能下降或者其他应用程序无法正常运行。因此,定期释放内存可以确保服务器始终具有足够的可用内存来处理请求,并提高整体性能。此外,释放内存还可以避免内存泄漏问题,确保应用程序的稳定性和可靠性。所以,释放内存回到服务器是非常重要的。

我在一个生产系统上运行着一个 SQL Server 2008 R2 实例。虽然我不是一名数据库管理员,更多的是开发人员,但我的客户目前问我:释放 SQL Server 中的内存回服务器有多重要?如果我们将内存释放回操作系统,会对后续查询实例的性能产生影响吗?
2个回答

如何准确地“释放”内存呢?

作为一般规则,SQL Server将从操作系统中窃取所有的内存,然后用于自身的目的。详见动态内存管理

Microsoft SQL Server数据库引擎的默认内存管理行为是尽可能获取所需的内存... 实例会根据需要继续获取内存以支持工作负载。当更多用户连接并运行查询时,SQL Server会按需获取额外的物理内存。SQL Server实例会继续获取物理内存,直到达到最大服务器内存分配目标或Windows指示没有多余的空闲内存为止;


我们将对连接到独立服务器上运行的SQL服务器实例的应用服务器进行压力测试。 - ronald_yoh

为什么你认为需要将内存释放回服务器呢?在大多数情况下,你应该尽可能地分配更多的内存给SQL Server,同时为操作系统和可能需要内存的其他程序留出适当的缓冲区。在理想的情况下,其他程序应该尽量减少或完全消除。SQL Server会逐渐使用它所需的内存,直到达到最大服务器内存设置(尽管在SQL Server 2012之前,这只影响缓冲池分配),并且只有在操作系统要求时才会释放内存。让SQL Server与操作系统争夺内存不会是一个好的情况。