SQL Server 内存使用情况不符

SQL Server 内存使用情况不符

编辑抱歉,我忘记了详细信息,我正在运行 SQL Server 2008 R2 16GB RAM

我的最小/最大内存分配设置为 13 GB。运行 perfmon - SQL Server:内存管理器。目标服务器内存和总服务器内存证实了这一点。任务管理器中的内存计数器为 15 GB(假设 2GB 用于其他应用程序)

我不明白的是,为什么 sqlservr.exe 进程在任务管理器中只显示 82KB 使用量?此外,任务管理器中在我的服务器上运行的进程所消耗的所有内存加起来也达不到 15 GB。

那么什么给了

答案1

115982 是一个非常相似的问题

这是 64 位服务器吗 - 您是否启用了内存本地策略中的锁定页面?

最可能的原因是这个 SQL Server 64 位实例正在使用“锁定页面”,正如我在之前的问题中描述的那样。请注意,任务管理器列上的名称称为内存(私有工作集)。记住我们还说过,如果 SQL Server 64 位实例使用“锁定页面”,则该内存将不会成为工作集的一部分(因为记住 AWE API 在 64 位上用于“锁定”页面,并且该内存不是工作集的一部分)。因此,由于锁定页面不是工作集的一部分,它们不会出现在任务管理器的此列中。在 Windows Server 2003 的任务管理器上,此列称为“内存使用情况”,但它也反映了进程的工作集。

这是一篇深入解释它的文章

您还可以在 SQL 中查看计数器

SELECT
    object_name
   ,Counter_name
   ,cntr_value
   ,ROUND(( cntr_value * 8192.0 ) / 1048576, 0) AS cntr_value_MB
FROM
    sys.dm_os_performance_counters
WHERE
    object_Name LIKE '%Buffer Manager%'
    AND RTRIM(counter_name) IN ( 'Free pages', 'Total pages',
                                 'Database pages' ) 
UNION SELECT
    object_name
   ,Counter_name
   ,cntr_value
   ,ROUND(( cntr_value / 1024 ), 0) AS cntr_value_MB
FROM
    sys.dm_os_performance_counters
WHERE
    counter_name IN ( 'Target Server Memory (KB)',
                      'Total Server Memory (KB)' )

答案2

您使用的 SQL Server 是哪个版本?是 x64 还是 x86?

我猜这是一台使用 AWE 的 x86 机器。使用 AWE 时,任务管理器不会报告正确的内存使用量。这是正常的,使用 perfmon 计数器查看使用了多少内存。

相关内容