快速查看为 SQL Server 分配了多少 RAM?

Ang*_*ker 15 sql-server-2005 sql-server-2008 sql-server memory

使用 SQL Server 2005,您可以查看任务管理器,至少可以粗略地查看分配给 SQL Server 的内存量。

在 SQL Server 2008 中,工作集或提交大小从未真正超过 500 MB,即使 SQLServer:Memory Manager/Total Server Memory (KB) perf 计数器指出 16,732,760。

是否有设置可以在任务管理器中实际显示服务器内存?或者是因为他们改变了 SQL Server 中内存的使用方式

Aar*_*and 26

您永远、永远不要相信任务管理器会告诉您 SQL Server 使用了多少内存(也许您记得 32 位系统的内存量非常小)。在此期间停止使用任务管理器。使用性能计数器 - 您还可以使用 DMV 查询性能计数器:

SELECT object_name, cntr_value 
  FROM sys.dm_os_performance_counters
  WHERE counter_name = 'Total Server Memory (KB)';
Run Code Online (Sandbox Code Playgroud)

您可以将其保存为工具 > 选项 > 环境 > 键盘 > 查询快捷方式中的查询快捷方式,并且在查询窗口中获得准确的结果比从任务管理器中获得不准确的结果要快得多。

您还可以使用以下查询检查内存压力(以及您是否可以对此采取任何措施):

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

-- SQL Server 2012:
SELECT physical_memory_kb FROM sys.dm_os_sys_info;

-- Prior versions:
SELECT physical_memory_in_bytes FROM sys.dm_os_sys_info;

EXEC sp_configure 'max server memory';
Run Code Online (Sandbox Code Playgroud)


Ror*_*ory 6

@AaronBertrand 的回答很棒。这是一个变体,从这里获取更多信息

SELECT
(physical_memory_in_use_kb/1024) AS Memory_usedby_Sqlserver_MB,
(locked_page_allocations_kb/1024) AS Locked_pages_used_Sqlserver_MB,
(total_virtual_address_space_kb/1024) AS Total_VAS_in_MB,
process_physical_memory_low,
process_virtual_memory_low
FROM sys.dm_os_process_memory;
Run Code Online (Sandbox Code Playgroud)

也是一篇很好的博客文章,说明为什么 TaskManager 不能胜任这里的任务。

要获得更多性能和 DMV 魔力,您不能错过 Glenn Berry 的 SQL Performance 博客