服务器总内存 - 通过 SQL 服务器获取内存的最准确方法是什么?

Total server memory - what is the most accurate way to get it through SQL Server?

为什么这两个查询的值彼此不一致:

SELECT [server memory] = physical_memory_in_bytes /1024.00/1024.00/1024.00
FROM sys.dm_os_sys_info;

SELECT object_name, cntr_value 
FROM sys.dm_os_performance_counters
WHERE counter_name = 'Total Server Memory (KB)';

它们都应该显示服务器总内存。

他们为什么不同意?

物理内存是该服务器上的总 RAM

您可以比较 SQL 服务器服务使用的内存量: sys.dm_os_sys_info 系统视图 committed_kb 字段和 sys.dm_os_performance_counters 查看 cntr_value