Answers:
您永远也不会相信任务管理器来告诉您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';
max server memory (MB)
但是您不需要键入整个内容)。为了查看它,您需要阅读错误消息,告诉您它是高级选项,然后单击sp_configure 'show adv', 1; reconfigure with override;
。请注意,您也不必在'show advanced options'
此处全部输入。
@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
EXEC sp_configure 'max server memory';
也没有在SQL 2008中存在