我有一个~45GB的数据库,并且还在快速增加(每周~1GB)。
因此它进行了大量插入;网络应用程序没有很多用户,所以现在读取量很低。
但我注意到 SQL 服务器用户的 RAM 从服务器首次启动时的约 1GB 增加到一周后的约 7GB。
是否存在某种内存泄漏?MSDN 上有一篇文章建议 SQL 服务器增加用于缓存的内存,并且该内存将一直增加。但是,该服务器只有 7.5GB 的 RAM,所以我担心它会耗尽内存,除非我每周重新启动 SQL Server……这似乎是错误的。
这是典型行为吗?我可以设置一些设置来限制内存使用量吗?
答案1
SQL 服务器会尽可能多地使用内存。SQL 服务器也难以置信很聪明。我们的数据库服务器的 RAM 大小从 2GB 到 96GB 不等,我从来没有一次需要介入并开始手动管理 RAM,而且大多数数据库服务器的利用率都达到 99.5%。
简单的事实是,运行消耗 1Gb 内存的 SQL Server 的读取速度将比运行消耗 96Gb 内存的 SQL Server 慢得多。
除非您与其他内存密集型角色共享 SQL 服务器角色,否则就不要管它。它永远不会使用系统中可用的更多内存,如果利用率达到 99%,那就太好了 - 您已经创建了一个大缓存,从现在开始速度会更快。
答案2
通常,您需要为操作系统分配 1-2 GB 的 RAM,以便操作系统有 RAM 可用。然后 SQL Server 可以使用剩余的内存。