Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
SQL Server 2014缓存池扩展 (Buffer Pool Extension)功能可以将缓存池扩展到较快的SSD存储上。为内存比较紧张的系统提供了新的扩展途径。
Buffer Pool 扩展可以带来以下好处。
1. 提高随机I/O的吞吐量
2. 降低I/O延迟
3. 提高单位时间内处理事务的吞吐量
4. 显著地提高读性能
5. 以软件方式为客户实现了类似于混合硬盘的效果。
缓存池扩展支持以下两种模式
CW:只向SSD写入干净页。
DW:双重写,即同时向SSD和硬盘写入脏页。
下面2张图里,C: 干净页 D:脏页 R:随机 S:顺序
1) 顺序写总是直接写入硬盘,不会写入SSD
2) 干净页的随机写是写入SSD,因为既然是干净页,硬盘上已经有一份拷贝。
3) 当缓存池尚有空间时,缓存池扩展采用CW模式的,只对SSD只写入干净页。
4) 当缓存池空间已满,需要将一部分脏页刷到硬盘上的时候,它是DW模式的,脏页将同时写入SSD和硬盘。
总的来说缓存池扩展对于读远远高于写的OLTP系统比较有帮助,对于以下环境,则帮助不大:
1.数据仓库。您应该考虑列存储而不是缓存池扩展
2.写入比较多的OLTP。
3.拥有大于64GB内存的服务器
以下是如何使用缓存池扩展的具体步骤:
首先检查SQL server最大内存的设置。建议将缓存池扩展的大小设为最大内存的16倍或以下。请先做好充分测试再实施到生产环境。
USE master
GO
EXEC sp_configure 'show advanced options', 1
RECONFIGURE WITH OVERRIDE
GO
EXEC sp_configure 'max server memory (MB)'
GO
/*
EXEC sp_configure 'max server memory (MB)', [VALUE (MB)]
RECONFIGURE WITH OVERRIDE
GO
*/
以下脚本启用了缓存池扩展到10GB:
USE master
GO
ALTER SERVER CONFIGURATION
SET BUFFER POOL EXTENSION ON
(FILENAME = 'E:\DB_Cache\SQL2014.BPE', SIZE = 10 GB);
GO
以下脚本为关闭缓存池扩展:
USE master
GO
ALTER SERVER CONFIGURATION
SET BUFFER POOL EXTENSION OFF;
GO
以下脚本为改变缓存池扩展的大小:
USE master
GO
ALTER SERVER CONFIGURATION
SET BUFFER POOL EXTENSION OFF;
GO
ALTER SERVER CONFIGURATION
SET BUFFER POOL EXTENSION ON
(FILENAME = 'F:\SSDCACHE\Example.BPE', SIZE = 20 GB);
GO
以下为缓存池扩展相关的DMV和perfmon counter,可用于检查设置和监控:
--DMV:
select * from sys.dm_os_buffer_pool_extension_configuration
select * from sys.dm_os_buffer_descriptors where is_in_bpool_extension = 1
--Perfmon counter:
SQL Server:Buffer Manager:Extension page reads/sec
SQL Server:Buffer Manager:Extension page writes/sec
SQL Server:Buffer Manager:Page reads/sec
SQL Server:Buffer Manager:Page writes/sec
SQL Server:Readahead pages/sec
这就是今天的分享,更多SQL 2014新功能介绍请持续关注本博客。 下周我们将会介绍针对基数估计的新设计(New Design for Cardinality Estimation).
