內存管理 – SQL Server 2005/2008/2008r2html
SQL Server 2012之前的版本(SQL 2005/2008/2008R2),有single page allocator 和multi page allocator。也就是說,若是申請的內存是8k之內的,就會有單頁分配器分配,而大於8kb的內存請求,使用multi page 分配器來管理。如圖所示。sql
使用select * from sys.dm_os_memory_clerks查詢memory clerk,會發現single pages 和multi pages 兩列。ide
內存管理 – SQL Server 2012spa
SQL Server 2012裏面再也不有single page allocator 和multi page allocator,而是把它們統一塊兒來了,叫作 any size page allocator。如圖所示。server
使用select * from sys.dm_os_memory_clerks查詢memory clerk,會發現single page 和multi page字樣消失了,只剩下pages 字樣。htm
從上面的圖能夠看出,SQL Server 2012 使用memory Manager來統一響應SQL Server 內部各類組件內存申請的請求。在SQL Server 2012裏面,max server memory 再也不像之前的版本那樣,只控制buffer pool的大小,也包括那些大於8kb 的內存請求。max server memory 可以更準確地控制SQL Server 的內存使用了。blog
參考文檔:ip
Memory Manager Configuration changes in SQL Server 2012內存
SQL Server 2012 內存管理 (memory management) 改進