为什么 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)