BPE特性
BPE特性
背景
在我們已有的較大的項目上,當數據庫比較大且基于數據庫開發定制的報表較多的情形下,業務高峰的IO波動非常大。基于這個情況,我們想從數據庫的特性出發,sql server 2014開始就發布過一個新特性Buffer Pool Extension (BPE),該特性說白就是內存不夠,SSD來湊,我們生產環境使用的2017版,版本上是支持,覺的可以小范圍試用。
主要收益如下
增加隨機I / O吞吐量
減少I / O延遲
增加交易吞吐量
更大的混合緩沖池提高了讀取性能
可以利用當前和未來的低成本內存驅動器的緩存體系結構
操作步驟
--查看當前設置
SELECT [path], state_description, current_size_in_kb,
CAST(current_size_in_kb/1048576.0 AS DECIMAL(10,2)) AS [Size (GB)]
FROM sys.dm_os_buffer_pool_extension_configuration;
--設置 Max memory
EXEC sys.sp_configure 'show advanced options', '1' RECONFIGURE WITH OVERRIDE;
GO
EXEC sys.sp_configure 'max server memory (MB)', '28672';
GO
RECONFIGURE WITH OVERRIDE;
GO
EXEC sys.sp_configure 'show advanced options', '0' RECONFIGURE WITH OVERRIDE;
GO
--啟用 BPE 使用1:8比例設置
ALTER SERVER CONFIGURATION
SET BUFFER POOL EXTENSION ON (FILENAME = 'F:BP_Extension.BPE', SIZE = 224 GB);
--再次查看啟用后的效果
SELECT [path], state_description, current_size_in_kb,
CAST(current_size_in_kb/1048576.0 AS DECIMAL(10,2)) AS [Size (GB)]
FROM sys.dm_os_buffer_pool_extension_configuration;
--查看有哪些語句使用了BPE
SELECT DB_NAME(database_id) AS [Database Name], COUNT(page_id) AS [Page Count],
CAST(COUNT(*)/128.0 AS DECIMAL(10, 2)) AS [Buffer size(MB)],
AVG(read_microsec) AS [Avg Read Time (microseconds)]
FROM sys.dm_os_buffer_descriptors
WHERE database_id <> 32767
AND is_in_bpool_extension = 1
GROUP BY DB_NAME(database_id)
ORDER BY [Buffer size(MB)] DESC;
--如果需禁用BPE
ALTER SERVER CONFIGURATION
SET BUFFER POOL EXTENSION OFF;
注意事項
BPE只支持64位的2014以及已上的版本;
標準版版BPE只支持Max Memory的1:4,企業版最大可支持1:32,設置BPE小于Max memory 會出錯誤提示;
BPE設置最好遵循官方的最佳實踐設置,1:4或1:8是一個比較好的選擇;
BPE目標是改進類似于oltp的工作負載系統,寫次數非常多的系統可能無法利用這一特性。
BPE不過是一個文件,盡可能放在快的磁盤中。當然,如果條件允許你可以優先選擇增加更多的內存;
一旦投入生產,請避免對文件進行配置更改或關閉功能。這些活動可能會對服務器性能產生負面影響,因為禁用該功能后,緩沖池的大小會大大減少。禁用后,在重新啟動SQL Server實例之前,不會回收用于支持該功能的內存。但是,如果重新啟用該功能,則將在不重新啟動實例的情況下重新使用內存。
參考
https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/buffer-pool-extension?view=sql-server-2017
總結
- 上一篇: Windows资源监视器软件的原理
- 下一篇: 军分区有士官名额吗