SQL Server 实例仅使用几百 MB。远低于最低服务器内存设置

5up*_*dan 9 sql-server memory configuration sql-server-2012

资源监视器的屏幕抓取

我有两个 SQL Server 2012 实例在具有 32GB RAM 的服务器上运行,并且很少运行其他实例。

一个实例表现正常。它的工作集内存运行接近其提交,这也接近 SQL Server 中的最大服务器内存设置。

另一个实例(在图像中突出显示)的行为不符合我的预期。无论我如何配置它的最小和最大内存设置,即使服务器上有足够的可用 RAM,我也无法获得超过几百 MB 的工作集内存。

这对其性能产生了非常不利的影响,尤其是在重负载下。数据库使用得很好,当这个实例正常工作时*它会很快填满20GB的最大服务器内存设置。

服务器已重新启动。实例已重新启动。我尝试更改为各种最小/最大设置并停止运行良好的实例 - 只是为了检查它是否以某种方式干扰。问题仍然存在,而一个实例似乎对最小和最大内存设置正常响应,而另一个则没有。

* 我不知道发生了什么变化,否则我会把它改回来。

  • 操作系统和 SQL Server 都是 64 位的。
  • sys.configurations的内容在两个实例上是相同的。
  • “低”服务器上的数据库总共有 10 多 GB。
  • 我相信服务器上的负载足够大,它应该使用更多内存。在过去,它过去常常很快地填充其内存分配。
  • 我已经对应该将数据提取到内存中的表进行了一些大型查询。
  • 这只是一个数据库服务器,它上面没有运行任何其他东西,而且自从出现这个问题以来,它的运行速度明显变慢。
  • sys.dm_os_sys_memoryperfmon与资源监视器一致。
  • 目标服务器内存 (KB) = 10240008;总服务器内存 (KB) = 5237744

Pau*_*ite 9

任务管理器或资源监视器中的内存计数器不是确定 SQL Server 内存使用情况的好方法。如果 SQL Server 使用锁定页面,则这些不会显示在工作集或专用字节中。

有多种方法可以确定 SQL Server 是否正在使用锁定页面。您可以在错误日志中查找类似以下的消息:

Using locked pages in the memory manager

或者,检查sys.dm_os_process_memoryDMVlocked_page_allocations_kb列。例如,在使用锁定页面的本地测试实例上,我看到:

锁定页面

而资源监视器显示:

资源监视器

请注意,这与sys.dm_os_sys_memory您在问题评论中提到的DMV不同。

DMV 中有各种其他有用的内存使用信息,包括高或低虚拟或物理内存指示。这些都在联机丛书中有所描述。

似乎SeLockMemoryPrivilege最近有人将 授予了SQL Server 启动帐户,或者该帐户已更改为LocalSystem默认情况下具有此权限

一般来说,在内存中锁定页面是一件好事