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


15

使用SQL Server 2005,您可以查看任务管理器,至少可以粗略地了解为SQL Server分配了多少内存。

使用SQL Server 2008,即使SQLServer:Memory Manager /总服务器内存(KB)性能计数器的状态为16,732,760,工作集或提交大小也不会真正超过500 MB。

是否有设置可以在任务管理器中实际显示服务器内存?还是它们更改了SQL Server中内存使用方式的结果

Answers:


25

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

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

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

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

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';

EXEC sp_configure 'max server memory';也没有在SQL 2008中存在
AngryHacker

@AngryHacker当然可以(它被调用了,max server memory (MB)但是您不需要键入整个内容)。为了查看它,您需要阅读错误消息,告诉您它是高级选项,然后单击sp_configure 'show adv', 1; reconfigure with override;。请注意,您也不必在'show advanced options'此处全部输入。
亚伦·伯特兰

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;

也是一篇很好的博客文章,介绍了TaskManager为什么不能胜任此处的任务

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.