SQL Server 2012 內存管理 (memory management) 改進


轉自 http://blogs.msdn.com/b/apgcdsd/archive/2013/07/11/sql-server-2012-memory-management.aspx

SQL Server 2012 的內存管理和以前的版本相比,有以下的一些變化。

一.內存分配器的變化

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 兩列:

select * from sys.dm_os_memory_clerks

2012里面就不一樣了,你會發現single page multi page字樣消失了,只剩下pages 字樣:

 

而下面的語句的輸出也是不一樣的:

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


 

從上面的圖可以看出,SQL Server 2012 多了一個memory Manager,它來統一響應SQL Server 內部各種組件內存申請的請求。因為這個原因,在SQL Server 2012里面,max server memory 不再像以前的版本那樣,只控制buffer pool的大小,也包括那些大於8kb 的內存請求。也就是, max server memory 能夠更准確地控制SQL Server 的內存使用了。更多內存管理信息,可以參考:

 http://sqlblog.com/blogs/sqlos_team/archive/2012/07/12/memory-manager-configuration-changes-in-sql-server-2012.aspx


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM