合 MSSQL 2014新功能之缓存池扩展BPE (Buffer Pool Extension)
Tags: MSSQLSQL Server整理自官网SQL Server 2014缓存池扩展BPE (Buffer Pool Extension)
简介
SQL Server 2014缓存池扩展 (Buffer Pool Extension)功能可以将缓存池扩展到较快的SSD存储上。为内存比较紧张的系统提供了新的扩展途径。
SQL Server 从磁盘中读入数据,并且存放在buffer pool中以供读取和修改,修改完之后脏数据还是放在buffer pool中,当内存紧张执行lazy write把脏数据写入磁盘,并且释放内存页。要用时又会从磁盘中读取,这样无形中加大了对io的需求。
SQL Server 2014之前解决方法:加内存,减少对IO的需求
SQL Server 2014解决办法:使用buffer pool扩展,加入SSD硬盘,加大工作集,减少对IO的需求。
SQL Server 2014 中另一个非常好的功能是,可以将SSD虚拟成内存的一部分,来供 SQL Server 数据页缓冲区使用。通过使用SSD来扩展 Buffer-Pool,可以使得大量随机的 IOPS 由 SSD 来承载,从而大量减少对于数据页的随机 IOPS 和 PAGE-OUT。
Buffer Pool 扩展可以带来以下好处。
1. 提高随机I/O的吞吐量
2. 降低I/O延迟
3. 提高单位时间内处理事务的吞吐量
4. 显著地提高读性能
5. 以软件方式为客户实现了类似于混合硬盘的效果。
总的来说缓存池扩展对于读远远高于写的OLTP系统比较有帮助,对于以下环境,则帮助不大:
1.数据仓库。您应该考虑列存储而不是缓存池扩展
2.写入比较多的OLTP。
3.拥有大于64GB内存的服务器
缓存池扩展支持以下两种模式
CW:只向SSD写入干净页。
DW:双重写,即同时向SSD和硬盘写入脏页。
下面2张图里,C: 干净页 D:脏页 R:随机 S:顺序
1) 顺序写总是直接写入硬盘,不会写入SSD
2) 干净页的随机写是写入SSD,因为既然是干净页,硬盘上已经有一份拷贝。
3) 当缓存池尚有空间时,缓存池扩展采用CW模式的,只对SSD只写入干净页。
4) 当缓存池空间已满,需要将一部分脏页刷到硬盘上的时候,它是DW模式的,脏页将同时写入SSD和硬盘。
缓冲池扩展的优点
SQL Server 数据库的主要用途是存储和检索数据,因此,大量磁盘 I/O 是该数据库引擎的一个核心特点。 由于磁盘 I/O 操作可能会占用消耗很多资源并且耗时较长,所以 SQL Server 侧重于使 I/O 极为高效。 缓冲池用作 SQL Server的主内存分配源。 缓冲区管理是实现高效 I/O 操作的关键环节。 缓冲区管理组件由下列两种机制组成:用于访问及更新数据库页的缓冲区管理器和用于减少数据库文件 I/O 的缓冲池。
数据和索引页从磁盘读入缓冲池,修改后的页(也称为脏页)写回磁盘。 服务器和数据库检查点上的内存压力会造成缓冲区缓存中的热(活动)脏页被逐出缓存并写入机械磁盘,然后又读回到缓存中。 这些 I/O 操作通常是 4 到 16 KB 数据的小型随机读和写操作。 小型随机 I/O 模式会导致频繁搜索、机械磁盘臂争用、I/O 滞后时间延长以及系统的总 I/O 吞吐量减少。
解决这些 I/O 瓶颈的典型方法是添加更多 DRAM,或者添加高性能 SAS 主轴。 虽然这些方法很有用,但它们具有明显缺点:DRAM 比数据存储驱动器成本更高,增加主轴数会增加硬件购置的资本支出,并且功耗和部件故障概率都会提高,从而增加运行成本。
缓冲池扩展功能通过非易失性存储器(通常为 SSD)来扩展缓冲池缓存。 由于这种扩展,缓冲池可以容纳更大的数据库工作集,可强制在 RAM 和 SSD 之间对 I/O 分页。 这会有效地将小型随机 I/O 从机械磁盘卸载到固态硬盘。 由于固态硬盘滞后时间短且具有更佳随机 I/O 性能,缓冲池扩展可显著提高 I/O 吞吐量。
下面的列表说明了缓冲池扩展功能的优点。
- 随机 I/O 吞吐量提高
- I/O 滞后时间缩短
- 事务吞吐量提高
- 由于采用更大的混合缓冲池,读取性能提高
- 具有一种可利用现有和将来的低成本内存驱动器的缓存体系结构
容量限制
SQL Server Enterprise 版本允许的最大缓冲池扩展大小为 max_server_memory 值的 32 倍。
SQL Server Standard 版本允许的最大缓冲池扩展大小为 max_server_memory 值的 4 倍。