簡介
SQL Server 2014中另一個非常好的功能是,可以將SSD虛擬成記憶體的一部分,來供SQL Server資料頁緩衝區使用。通過使用SSD來擴充Buffer-Pool,可以使得大量隨機的IOPS由SSD來承載,從而大量減少對於資料頁的隨機IOPS和PAGE-OUT。
SSD AS Buffer Pool
SSD是固態硬碟,不像傳統的磁碟有磁頭移動的部分,因此隨機讀寫的IOPS遠遠大於傳統的磁碟。將SSD作為Buffer Pool的延伸,就可以以非常低的成本巨量的擴充記憶體。而傳統的模式是記憶體只能容納下熱點資料的一小部分,從而造成比較大的Page-Out,1所示。
圖1.大量隨機的IOPS需要由磁碟陣列所承擔
但如果考慮到將SSD加入電腦的儲存體系,那麼記憶體可以以非常低的成本擴充到約等於熱點資料,不僅僅是提升了效能,還可以減少IO成本,2所示。
圖2.擴充後記憶體幾乎能HOLD所有熱點資料
由圖1和圖2的對比可以看出,擴充後可以使用更便宜的SATA儲存。此外,該特性是透明的,無需應用程式端做任何的改變。
此外,該特性為了避免資料的丟失,僅僅在作為緩衝區的SSD中儲存Buffer Pool的Clean Page,即使SSD出現問題,也只需要從輔助儲存中Page In頁即可。
最後,該特性對於NUMA進行了特別最佳化,即使擁有超過8個Socket的系統,CPU也能無障礙的訪問記憶體。
啟用BUFFER Pool Extension
在SQL Server 2014總,啟用Buffer Pool Extension非常簡單,僅僅需要擁有SysAdmin許可權後,輸入一個T-SQL語句即可,3所示。
圖3.啟用Buffer Pool Extension
對應的,我們可以在物理磁碟中看到這個擴充檔案,該檔案的效能和Windows的虛擬記憶體檔案非常類似,4所示。
圖4.對應的Buffer Pool擴充檔案
但這裡值得注意的是,我們啟用的記憶體擴充無法小於實體記憶體或閾值,否則會報錯,5所示。
圖5.報錯資訊
對於該功能,SQL Server引入了一個全新的DMV和在原有的DMV上加了一列,來描述Buffer Pool Extention,6所示。
圖6.引入的新的DMV和對於原有DMV的更新
此外,對於該特性的監控,SQL Server還引入了大量與之相關的計數器,7所示。
圖7.相關計數器
小結
SQL Server Buffer Pool Extension給我們提供了以更低成本來滿足更高企業級需求的可能,結合記憶體資料庫,未來的可能性將無限延伸。