【问题标题】:SQL Server - Does it really release memory when another process needs it?SQL Server - 当另一个进程需要它时它真的释放内存吗?
【发布时间】:2010-11-11 15:05:26
【问题描述】:

我们有一个运行 SQL Server 2008 的 8 核、16GB RAM 服务器。当我们对数百万行执行大型查询时,RAM 使用量会上升到 15.7GB,然后甚至文件浏览、打开 excel 等都会变得非常慢。

那么当另一个进程需要它或者我有另一个问题时,SQL Server 真的会释放内存吗?我们没有在此服务器上运行任何其他主要程序。

我们为 SQL Server 设置了 14GB 的最大内存使用量。

感谢大家的任何启发或解决问题的想法。

【问题讨论】:

    标签: sql-server sql-server-2008 memory


    【解决方案1】:

    是的。有关其工作原理的详细信息,请参阅SQLOS's memory manager: responding to memory pressure。但是,“内存压力”究竟意味着什么,它取决于机器和机器以及操作系统版本,请参阅Q & A: Does SQL Server always respond to memory pressure?。如果您想为应用程序保留更多内存(我什至懒得问为什么您浏览文件并在专用于 SQL Server 的机器上使用 Excel....)那么您应该降低 mas服务器内存,直到它留出足够的娱乐时间。

    【讨论】:

      【解决方案2】:

      SQL 服务器不释放内存。它会占用所有可以达到 MaxMemory 设置的内存并保持在那里。

      【讨论】:

      • 真的吗?您是否有指向某处的链接来确认这一点?
      • 这样可以吗? serverfault.com/questions/1279/… 如果要释放内存,则必须降低最大内存设置。
      • 该链接没有说明 SQL Server 不会释放内存,而是根据需要消耗内存。在您的回答中,您基本上是在说它永远不会释放内存,即使操作系统指示另一个进程需要此内存?
      • 姆拉登错了。它可以释放,如果允许这样做(在服务器级别设置),它会释放。
      • 好的,也许我应该更清楚。如果 SQL 服务器获得内存压力,它将被操作系统强制释放内存。然而,当这个内存压力停止时,如果 sql server 大量使用,内存将再次上升。这是添加更多 RAM 的典型场景。
      猜你喜欢
      • 2018-07-15
      • 1970-01-01
      • 2010-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-27
      • 2010-09-25
      • 1970-01-01
      相关资源
      最近更新 更多