为什么我的 SQL 服务器使用了大约 4 GB 的内存?

0 sql-server memory

我注意到我的 SQL 服务器经常会占用 8GB 内存的 50%。这通常发生在我运行完一些 SQL 查询之后,而不是在它们运行时发生。最常见的查询是生成数百万行随机数据。在我使用的查询中

BEGIN TRAN
  ....
COMMIT TRAN
Run Code Online (Sandbox Code Playgroud)

我猜这可能是原因,但我对 SQL 的了解还不够,无法找出问题所在。

Aar*_*and 10

SQL Server 使用该内存是因为它需要它,并且通常不会释放它,除非操作系统有压力这样做(因为它假定您将再次需要那么多内存)。因此,它使用 4 GB 的 RAM 实际上是一件好事,如果您不需要该内存用于其他用途,您为什么要关心?

您基本上有两种选择:

  • 将 SQL Server 限制为更低(例如 2 GB)。这将使您的查询变慢,但至少您仍然可以将所有宝贵的 RAM 闲置。

  • 完成任何将 SQL Server 推高超过 4 GB 的高内存操作后,重新启动 SQL Server。这将允许您的查询使用它们需要的内存运行,但在完成时仍会返回该内存。不是我对欢乐时光的看法,但是嘿...


Dav*_*vid 6

SQL Server 将始终使用给定的所有可用内存。一旦某些内容从磁盘读取到内存中,它就会留在那里并且永远不会被释放以优化性能,以防需要再次读取。在生产环境中,经常看到 SQL Server 实例的内存利用率一直保持在 95%。

这与内存的正常应用程序使用不一致,这可能会导致一些混乱。此行为与 TSQL 脚本和对象中的任何事务使用无关。

编辑:

这是 Brent Ozar 关于该主题的一篇文章,其中包含一个绝对精彩的引述:

“SQL Server 正在使用所有内存。句号。” - http://www.brentozar.com/archive/2011/09/sysadmins-guide-microsoft-sql-server-memory/

更多编辑:

如果您想限制它使用的内存,以下文章提供了更新最大内存设置的说明,该设置将对使用的内存设置上限。

http://technet.microsoft.com/en-us/library/ms191144%28v=sql.105%29.aspx