Buffer Pool擴展是buffer pool 和非易失的SSD硬盤做連接。以SSD硬盤的特點來提高隨機讀性能。
緩沖池擴展優點SQL Server讀以隨機讀為主,SQL Server IO分為2部分:buffer pool管理方式,和buffer pool。
SQL Server 從磁盤中讀入數據,并且存放在buffer pool中以供讀取和修改,修改完之后臟數據還是放在buffer pool中,當內存緊張執行lazy write把臟數據寫入磁盤,并且釋放內存頁。要用時又會從磁盤中讀取,這樣無形中加大了對io的需求。
SQL Server 2014之前解決方法:加內存,減少對IO的需求
SQL Server 2014解決辦法:使用buffer pool擴展,加入SSD硬盤,加大工作集,減少對IO的需求。
主要優點:
· 隨機 I/O 吞吐量提高
· I/O 滯后時間縮短
· 事務吞吐量提高(減少io等待時間)
· 由于采用更大的混合緩沖池,讀取性能提高(SSD隨機讀寫能力強)
· 具有一種可利用現有和將來的低成本內存驅動器的緩存體系結構(因為有SSD,可以減少對IO的投入)
Buffer Pool擴展詳細SSD是作為Buffer Pool的擴展,而不是磁盤存儲的擴展,也就是說SSD是歸buffer pool管理器管,Buffer pool以在SSD上創建一個緩沖文件的方式存在,創建了一個多層的結構:
L1:內存,L2:SSD緩存文件。L2上面的數據都是干凈的數據,L2目前看來只是為讀提供緩存,不提供臟數據的緩存。從而加大了工作集,為數據讀取提供良好的性能支持。
啟用緩沖池擴展后,該功能會指定固態硬盤上緩沖池緩存文件的大小和文件路徑。此文件是固態硬盤上的一個連續存儲范圍,是在 SQL Server 實例啟動期間靜態配置的。
ALTERSERVER CONFIGURATION SETBUFFERPOOL EXTENSION ON
(FILENAME='c:/sqlserver.PBE',size = 5GB)
只有在禁用了緩沖池擴展功能的情況下,才能修改此文件的配置參數。禁用緩沖池擴展后,將從注冊表中刪除所有相關的配置設置。SQL Server 實例關閉時,將會刪除緩沖池擴展文件。
ALTERSERVER CONFIGURATION SETBUFFERPOOL EXTENSION OFF
最佳實踐1. 緩沖池擴展大小最大可為 max_server_memory 值的 32 倍。我們建議物理內存 (max_server_memory) 的大小與緩沖池擴展的大小之比不應超過 1:16。介于 1:4 至 1:8 之間的比率是最佳的。
2. 在生產環境中實現之前,應徹底測試緩沖池擴展。處于生產過程中時,請避免對該文件進行配置更改或關閉該功能。因為禁用該功能時會大大減小緩沖池大小,所以這些活動可能會對服務器性能產生負面影響。禁用時,不回收用于支持該功能的內存,直到重新啟動 SQL Server 的實例。但是,如果重新啟用該功能,將重用內存而不必重新啟動實例。
Buffer pool 擴展相關信息· sys.dm_os_buffer_pool_extension_configuration (Transact-SQL)
· sys.dm_os_buffer_descriptors (Transact-SQL)