缓存池扩展 (Buffer Pool Extension)实践

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介:

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倍或以下。请先做好充分测试再实施到生产环境。

复制代码
 1 USE master
 2 GO 
 3 
 4 EXEC sp_configure 'show advanced options', 1
 5 RECONFIGURE WITH OVERRIDE
 6 GO
 7 
 8  
 9 EXEC sp_configure 'max server memory (MB)'
10 GO 
11 
12 /*
13 
14 EXEC sp_configure 'max server memory (MB)', [VALUE (MB)]
15 RECONFIGURE WITH OVERRIDE
16 GO
17 */
复制代码

以下脚本启用了缓存池扩展到10GB:

复制代码
 1 USE master
 2 GO 
 3 
 4 ALTER SERVER CONFIGURATION   
 5 SET BUFFER POOL EXTENSION OFF;
 6 GO
 7 
 8 ALTER SERVER CONFIGURATION
 9 SET BUFFER POOL EXTENSION ON   
10 (FILENAME = 'F:\SSDCACHE\Example.BPE', SIZE = 20 GB);
11 GO
复制代码

以下为缓存池扩展相关的DMV和perfmon counter,可用于检查设置和监控:

复制代码
 1 --DMV:
 2 select * from sys.dm_os_buffer_pool_extension_configuration
 3 select * from sys.dm_os_buffer_descriptors where is_in_bpool_extension = 1
 4 
 5 --Perfmon counter:
 6 SQL Server:Buffer Manager:Extension page reads/sec
 7 SQL Server:Buffer Manager:Extension page writes/sec
 8 SQL Server:Buffer Manager:Page reads/sec
 9 SQL Server:Buffer Manager:Page writes/sec
10 SQL Server:Readahead pages/sec
复制代码
相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
5月前
|
缓存 Java Maven
Java本地高性能缓存实践问题之SpringBoot中引入Caffeine作为缓存库的问题如何解决
Java本地高性能缓存实践问题之SpringBoot中引入Caffeine作为缓存库的问题如何解决
137 1
|
5月前
|
缓存 Java Spring
Java本地高性能缓存实践问题之Caffeine中设置刷新机制的问题如何解决
Java本地高性能缓存实践问题之Caffeine中设置刷新机制的问题如何解决
157 1
|
5月前
|
存储 缓存 Java
Java本地高性能缓存实践问题之如何定义Caffeine的缓存
Java本地高性能缓存实践问题之如何定义Caffeine的缓存
|
5月前
|
缓存 Java
Java本地高性能缓存实践问题之Caffeine缓存库中基于时间设置驱逐策略的问题如何解决
Java本地高性能缓存实践问题之Caffeine缓存库中基于时间设置驱逐策略的问题如何解决
|
5月前
|
缓存 Java
Java本地高性能缓存实践问题之AsyncCache中移除一个缓存元素的问题如何解决
Java本地高性能缓存实践问题之AsyncCache中移除一个缓存元素的问题如何解决
|
5月前
|
缓存 Java
Java本地高性能缓存实践问题之使用Caffeine的Cache接口来查找一个缓存元素的问题如何解决
Java本地高性能缓存实践问题之使用Caffeine的Cache接口来查找一个缓存元素的问题如何解决
|
2月前
|
缓存 NoSQL Redis
Redis 缓存使用的实践
《Redis缓存最佳实践指南》涵盖缓存更新策略、缓存击穿防护、大key处理和性能优化。包括Cache Aside Pattern、Write Through、分布式锁、大key拆分和批量操作等技术,帮助你在项目中高效使用Redis缓存。
356 22
|
3月前
|
存储 缓存 NoSQL
保持HTTP会话状态:缓存策略与实践
保持HTTP会话状态:缓存策略与实践
|
3月前
|
存储 缓存 NoSQL
深入理解后端缓存机制的重要性与实践
本文将探讨在后端开发中缓存机制的应用及其重要性。缓存,作为提高系统性能和用户体验的关键技术,对于后端开发来说至关重要。通过减少数据库访问次数和缩短响应时间,缓存可以显著提升应用程序的性能。本文将从缓存的基本概念入手,介绍常见的缓存策略和实现方式,并通过实例展示如何在后端开发中有效应用缓存技术。最后,我们将讨论缓存带来的一些挑战及其解决方案,帮助您在实际项目中更好地利用缓存机制。
|
3月前
|
存储 缓存 监控
HTTP:强缓存优化实践
HTTP强缓存是提升网站性能的关键技术之一。通过精心设计缓存策略,不仅可以显著减少网络延迟,还能降低服务器负载,提升用户体验。实施上述最佳实践,结合持续的监控与调整,能够确保缓存机制高效且稳定地服务于网站性能优化目标。
59 3