0
点赞
收藏
分享

微信扫一扫

SQLServer 2014 缓冲池扩展(Buffer Pool Extension)

李雨喵 2023-01-11 阅读 102


SQL Server 2014 中引入的缓冲池扩展提供数据库引擎缓冲池的非易失性随机存取内存(即固态硬盘)扩展的无缝集成,从而显著提高 I/O 吞吐量。 并非每个 SQL Server 版本均提供了缓冲池扩展。更多说明参考  ​​缓冲池扩展​​


缓冲池扩展功能的优点:

>>  随机 I/O 吞吐量提高

>>  I/O 滞后时间缩短

>>  事务吞吐量提高

>>  由于采用更大的混合缓冲池,读取性能提高

>>  Improved read performance with a larger hybrid buffer pool

>>  具有一种可利用现有和将来的低成本内存驱动器的缓存体系结构


SSD 存储用作内存子系统的扩展而不是磁盘存储子系统的扩展。 也就是说,通过缓冲池扩展文件,缓冲池管理器可以使用 DRAM 和 NAND 闪存,在由固态硬盘支持的非易失性随机存取内存中保持一个大得多的温热页缓冲池。 这会在固态硬盘上创建一个多级缓存层次结构,级别 1 (L1) 作为 DRAM,级别 2 (L2) 作为缓冲池扩展文件。 仅将干净页写入 L2 缓存,以帮助确保数据安全。 缓冲区管理器会处理 L1 和 L2 缓存之间的干净页移动。

下图所示为缓冲池相对于其他 SQL Server 组件的高级体系结构概览。

SQLServer 2014 缓冲池扩展(Buffer Pool Extension)_SQL


启用缓冲池扩展后,该功能会指定固态硬盘上缓冲池缓存文件的大小和文件路径。 此文件是固态硬盘上的一个连续存储范围,是在 SQL Server 实例启动期间静态配置的。 只有在禁用了缓冲池扩展功能的情况下,才能修改此文件的配置参数。 禁用缓冲池扩展后,将从注册表中删除所有相关的配置设置。 SQL Server 实例关闭时,将会删除缓冲池扩展文件。


最佳实践:

1. 首次启用缓冲池扩展后,建议重新启动 SQL Server 实例,以获得最大的性能优势。

2. 对于企业版,缓冲池扩展大小最大可为 max_server_memory 值的 32 倍,而对于标准版,最大可为其 4 倍。 我们建议物理内存 (max_server_memory) 的大小与缓冲池扩展的大小之比不应超过 1:16。 介于 1:4 至 1:8 之间的比率是最佳的。 有关设置 max_server_memory 选项的信息。

3. 在生产环境中实现之前,应彻底测试缓冲池扩展。 处于生产过程中时,请避免对该文件进行配置更改或关闭该功能。 因为禁用该功能时会大大减小缓冲池大小,所以这些活动可能会对服务器性能产生负面影响。 禁用时,不回收用于支持该功能的内存,直到重新启动 SQL Server 的实例。 但是,如果重新启用该功能,将重用内存而不必重新启动实例。


设置 buffer pool 限制:

USE master
GO
EXEC sp_configure 'show advanced options', 1
RECONFIGURE WITH OVERRIDE
GO
EXEC sp_configure 'max server memory (MB)'
GO


启用和配置缓冲池扩展:

ALTER SERVER CONFIGURATION
SET BUFFER POOL EXTENSION
ON ( FILENAME = N'D:\os_file_path_and_name.BPE' , SIZE = 2046MB)
GO



注意:文件存放应该在 固态硬盘 (SSD) 中。



若要更改文件位置或者大小,先关闭缓冲池扩展。(关闭后,文件自动删除)

ALTER SERVER CONFIGURATION SET BUFFER POOL EXTENSION OFF
GO

ALTER SERVER CONFIGURATION
SET BUFFER POOL EXTENSION
ON ( FILENAME = N'E:\os_file_path_and_name.BPE' , SIZE = 4GB)
GO


缓冲池扩展信息,可以查看以下 DMV:

SELECT * FROM sys.dm_os_buffer_pool_extension_configuration
SELECT * FROM sys.dm_os_buffer_descriptors


视图 dm_os_buffer_descriptors 的字段 is_in_bpool_extension 可以确定是否有页面使用了扩展缓存。



举报

相关推荐

0 条评论