内存管理 – SQL Server 2005/2008/2008r2
SQL Server 2012以前的版本(SQL 2005/2008/2008R2),有single page allocator 和multi page allocator。也就是说,如果申请的内存是8k以内的,就会有单页分配器分配,而大于8kb的内存请求,使用multi page 分配器来管理。如图所示。
使用select * from sys.dm_os_memory_clerks查询memory clerk,会发现single pages 和multi pages 两列。
内存管理 – SQL Server 2012
SQL Server 2012里面不再有single page allocator 和multi page allocator,而是把它们统一起来了,叫做 any size page allocator。如图所示。
使用select * from sys.dm_os_memory_clerks查询memory clerk,会发现single page 和multi page字样消失了,只剩下pages 字样。
从上面的图可以看出,SQL Server 2012 使用memory Manager来统一响应SQL Server 内部各种组件内存申请的请求。在SQL Server 2012里面,max server memory 不再像以前的版本那样,只控制buffer pool的大小,也包括那些大于8kb 的内存请求。max server memory 能够更准确地控制SQL Server 的内存使用了。
参考文档:
Memory Manager Configuration changes in SQL Server 2012
SQL Server 2012 内存管理 (memory management) 改进
http://www.cnblogs.com/stswordman/p/3239754.html
本文出自 “曾垂鑫的技术专栏” 博客,谢绝转载!