原文地址:https://blogs.msdn.microsoft.com/apgcdsd/2013/07/10/sql-server-2012-memory-management
内存分配器的变化
SQL Server 2012以前的版本,比如SQL Server 2008 R2等,有single page allocator和multi page allocator。 也就是说, 如果申请的内存是8k以内的,就会有单页分配器分配,而大于8kb的内存请求,使用multi page 分配器来管理。所以,如果你运行DBCC MemoryStatus,你会发现这两个分配器分配的内存情况。
如果你查询memory clerk,也会发现single pages 和multi pages 两列:
1 | select * from sys.dm_os_memory_clerks |
而2012里面就不一样了,你会发现single page 和multi page字样消失了,只剩下pages 字样:
而下面的语句的输出也是不一样的:
1 | select * from sys.dm_os_memory_clerks |
那么为什么会有这样的变化呢?原因就是SQL Server 2012里面不再有single page allocator 和multi page allocator,而是把它们统一起来了,叫做 any size page allocator。 下面的两张图可以看到这样的变化:
SQL Server 2008 R2:
SQL Server 2012: