为什么 SQL Server 2012 工作集内存低?

And*_*y W 4 sql-server memory sql-server-2012

我最近为一个繁忙的网站迁移了一个 100GB 的数据库:

MS SQL 2008 Standard Edition R2
Windows Server 2008
48gb RAM
Run Code Online (Sandbox Code Playgroud)

MS SQL 2012 Web Edition
Windows Server 2012
64gb RAM
Run Code Online (Sandbox Code Playgroud)

我注意到 2012 年的内存使用情况似乎有所不同,与2008 年服务器相比,工作集内存相对较低(请参见下面的屏幕截图)。

这看起来正确吗,我应该担心吗?我想确保 MSSQL 可以根据需要访问尽可能多的内存。两台服务器的使用配置文件,就来自它们所支持的网站的请求而言,是相同的,因此查询的模式或数量没有改变。

SQL Server 2008 在此处输入图片说明

SQL Server 2012 在此处输入图片说明

SQL Server 2008 内存设置 在此处输入图片说明

SQL Server 2012 内存设置 在此处输入图片说明

感谢您提供任何提示。

Aar*_*and 8

SQL Server 2012 极大地改变了它控制和管理内存的方式。在 2012 年之前,max server memory只控制了 8K 页,现在它控制的远不止这些。

这里有一些来自 SQLOS 团队的好文章:

第 1 条| 第 2 条| 第 3 条| 第四条

通过这些更改,您在工作集、最大服务器内存等中看到的内容几乎肯定会因版本而异。关键是关注这些数字的“正常”是什么,看看当出现特定的性能问题时它们是否有很大的偏差。当系统运行良好时,我不会只看一个数字,然后假设出现问题(这种情况经常发生在页面预期寿命为 300 之类的幻数中 - 也许您系统上的 PLE始终为120)。

一些可能有助于大致了解并设置一些基线的查询:

SELECT TOP (10) page_type, 
  numpages = COUNT(*), 
  size_kb = 8*COUNT(*) 
FROM sys.dm_os_buffer_descriptors
WHERE database_id < 32767
GROUP BY page_type
ORDER BY size_kb DESC;

SELECT * FROM sys.dm_os_process_memory;

SELECT TOP (10) [type], 
  size_kb = SUM(pages_kb) 
FROM sys.dm_os_memory_clerks 
GROUP BY [type]
ORDER BY size_kb DESC;

SELECT * FROM sys.dm_os_performance_counters 
WHERE object_name LIKE '%Memory Broker%'
   OR object_name LIKE '%Buffer Manager%'
   OR object_name LIKE '%Memory Manager%'
   OR object_name LIKE '%Memory Node%';
Run Code Online (Sandbox Code Playgroud)