Buffer Pool扩展
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)
XEvent |
说明 |
参数 |
sqlserver.buffer_pool_extension_pages_written |
在将页或页组从缓冲池逐出并写入缓冲池扩展文件时激发。 |
· number_page · first_page_id · first_page_offset · initiator_numa_node_id |
sqlserver.buffer_pool_extension_pages_read |
在将页从缓冲池扩展文件读取到缓冲池时激发。 |
· number_page · first_page_id · first_page_offset · initiator_numa_node_id |
sqlserver.buffer_pool_extension_pages_evicted |
在将页从缓冲池扩展文件中逐出时激发。 |
· number_page · first_page_id · first_page_offset · initiator_numa_node_id |
sqlserver.buffer_pool_eviction_thresholds_recalculated |
在计算逐出阈值时激发。 |
· warm_threshold · cold_threshold · pages_bypassed_eviction · eviction_bypass_reason · eviction_bypass_reason_description |
参考
SQL Server 2014新特性探秘(2)-SSD Buffer Pool Extension
ALTER SERVER CONFIGURATION (Transact-SQL)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现