建站模板更改,1688网,国产服务器品牌前十大排名,网站开发用原生在2023年云栖大会上#xff0c;阿里云数据库产品事业部负责人李飞飞在主题演讲中提到#xff0c;瑶池数据库推出“DB存储”一体化能力#xff0c;结合人工智能、机器学习、存储等方法和创新能力#xff0c;实现Buffer Pool Extension能力和智能冷温热数据分层能力。在大会的…在2023年云栖大会上阿里云数据库产品事业部负责人李飞飞在主题演讲中提到瑶池数据库推出“DB存储”一体化能力结合人工智能、机器学习、存储等方法和创新能力实现Buffer Pool Extension能力和智能冷温热数据分层能力。在大会的《云数据库RDS年度发布与最佳实践》演讲中阿里云RDS及OLAP开源产品部负责人彭祥表示面对当前越来越丰富且复杂的数据环境性能、弹性、成本是数据库用户的三大重点诉求阿里云RDS产品在业界率先推出新型存储类型——通用云盘将云盘的IOPS与容量彻底解耦增加缓存扩展的能力用技术提升RDS产品IO性能降低存储降本。 RDS通用云盘IO加速功能现已全网公测欢迎点击「公测」直达体验。 1. 什么是通用云盘? 介绍通用云盘前我们先来说说存储。众所周知数据库架构设计由下至上可分为存储层、引擎层、服务层、网络层。存储层负责数据的持久化存储和读取处于整个数据库系统架构的最底层。数据存储和数据检索读取是它的两大功能。在数据库中存储层常见的存储类型往往有基于物理机本地硬盘的本地盘和基于分布式存储架构的云盘。本地盘存储数据存储与计算资源位于同一物理服务器节点上由于数据读写不需要经过网络传输因此IO延迟通常较低随机读写性能高但本地盘的存储容量受限于单个服务器的硬件配置一旦服务器出现故障可能影响数据的安全性和可用性且本地盘存储容量难以独立扩展云盘基于分布式存储架构数据存储与计算资源分离用户可独立地按需调整计算和存储资源提高了资源的利用率和灵活度但云盘通过网络为计算节点提供存储服务多少会对IO延时有所影响而且云盘的性能往往跟其容量绑定提升性能大部分情况下势必需要提升云盘容量除此之外云盘不支持缩容。 而在调研和分析用户业务场景的过程中我们发现在多个行业例如电商行业、新零售行业、游戏行业等用户业务流量并不是一直持续一个水位有明显的波峰波谷特征如何让性能不受容量影响顺应峰值的到来而提升如何得到性能低延迟、高持久的同时做到完美的成本控制低成本已然成为大部分客户在数据库选型中的关注点。阿里云RDS产品率先推出了通用云盘同时满足用户关于低成本、低延迟、高持久性的诉求。 通用云盘首先是一种云盘。但与当前业界主流云盘的区别在于通用云盘深度融合PaaS层和IaaS层的技术创新改变了传统的数据存储结构将原有的单一数据存储划分为了三层存储结构缓存层、数据层、冷存层。热数据存入缓存盘High Performance Disk温数据存入数据盘ESSD云盘归档数据存入冷存盘OSS对象存储。这样的存储结构设计中将缓存盘作为可扩展的一部分达到IO加速的效果基于AliSQL独有的内核能力轻松应对读写数据库过程中的IO突发情况发生并支持最小10GB最大64T的容量空间、云盘缩容以及自动秒级扩容的功能同时将不常用的冷数据归档存储于对象存储上又实现使用成本的节约。通用云盘将IO性能与云盘容量解耦使得数据层在IO性能与云盘容量两个方面都实现了极致弹性。 2. 三层存储是怎样的一种架构 通用云盘的架构设计如上图所示从左至右依次是缓存层、数据层、冷存层。各层存储各司其职选择不同的存储介质在对应存储层中发挥价值最大化。 缓存层处理高IOPS和超低IO时延需求一般百万级IOPS和微秒级IO时延需求。采用阿里云高速缓存盘High Performance Disk结合RDS数据库引擎的缓存技术实现查询数据库过程中的IO加速功能带来更高的查询性能。数据层处理低IO时延和数据可靠性需求一般万级IOPS和毫秒级IO时延需求。采用阿里云ESSD云盘保障数据的高可靠性和安全性并借助基础设施和AliSQL内核的创新能力以及RDS数据库的管控架构升级达到IO性能与云盘容量的解耦实现数据库读写过程的IO突发功能提升了IO性能与云盘容量的极致弹性。冷存层处理数据持久化和存储低成本需求一般存储在冷存层的数据不常被访问但有超高的数据库可靠性和持久性需求。采用阿里云对象存储(Object Storage ServiceOSS)结合RDS数据库引擎的归档技术实现了数据库的归档功能并支持通过ALTER TABLE实现表文件在数据层和冷存层的切换为不常访问的数据表提供了更低成本的存储选择。 表1RDS通用云盘三层存储介质对比 3. 通用云盘有哪些特征?
在详解特性技术前我们整理了一张通用云盘三层存储的特性对比表如下 表2RDS通用云盘三层存储特性对比 3.1 缓存层特性——IO加速 IO加速是指提升数据库查询性能的一种特性。该特性主要体现在通用云盘的缓存层发挥出高速缓存盘的高IO性能优势从整体上提升数据库的查询性能。相比于ESSD云盘高速缓存盘具备更高的IOPS上限和带宽上限以及更低的IO时延。 缓存层通过两种方式实现IO加速
缓存池扩展Buffer Pool Extension, BPE利用高速缓存盘进行缓存池扩展提高缓存命中率减少数据层ESSD的访问次数加快数据库查询速度。存放临时表/文件利用高速缓存盘存放临时表/文件提高临时表/文件的访问速度进而提高数据库查询性能。 基于此IO加速特性较适合读负载较高、临时表/文件使用较多的业务场景。当前RDS的MySQL引擎已支持上述两种方式RDS的PostgreSQL引擎暂仅支持存放临时表/文件的方式来实现IO加速。 3.1.1 缓存池扩展Buffer Pool Extension, BPE
缓存池Buffer Pool简称BP是数据库引擎内存区域的一部分用于临时存储常用的数据和索引页从而减少对磁盘的访问次数提高数据库操作的性能和效率。因此缓存池越大缓存命中率就越高数据库对磁盘的访问次数就越少整体的查询性能和效率就越高。 但是缓存池的大小受限于内存资源而对于数据库系统来说内存资源的使用往往是比较紧张的。为了能够在不增加内存资源的情况下扩大缓存并且充分利用高速缓存盘高IO性能的优势RDS的MySQL引擎实现了缓存池扩展的功能对内存中的缓存池进行扩充进一步提高缓存命中率提升数据库整体查询性能。 缓存池扩展作用原理如上图一次数据页读取的过程 1.客户端侧发起读取数据页的请求。 2.请求进入内存的缓存池中查找指定数据页
如果在缓存池中找到数据页则返回结果给客户端侧查询和读取结束。如果在缓存池中未找到数据页则执行步骤3。 3.请求进入缓存盘的缓存池拓展中查找指定数据页
如果在缓存池拓展中找到数据页则返回数据页给缓存池再返回结果给客户端侧查询和读取结束。如果在缓存池拓展中未找到数据页则执行步骤4。 4.请求进入ESSD的数据表文件中查找指定数据页。找到数据页后返回给缓存池再返回结果给客户端侧。 5.查询和读取请求结束。 3.1.2 存放临时表/文件
对于数据库引擎来说内存中的缓存池、磁盘中的临时表/文件都会影响数据库的查询性能。临时表/文件用于当前会话或者查询中存放数据查询过程中产生的中间结果或者超出内存的结果一般不需要持久化存储到数据文件中使用后便会被删除。 基于临时表/文件在业务中的无持久化需求RDS通用云盘有别于当前的ESSD云盘更改了临时表/文件的存储位置。之前RDS数据库的临时表/文件存放于ESSD数据盘中而推出通用云盘后临时表/文件可存储于高速缓存盘中提升了数据库对临时表/文件的访问效率进而加快数据库查询速度。 以8核16GB规格为例IO加速功能测试结果如下
read_only QPS提升80%。write_only QPS提升33%。read_write QPS提升103%。 3.2 数据层特性——IO突发和云盘缩容 通用云盘的数据层采用云盘ESSD作为存储介质借助ESSD云盘的创新能力实现云盘的IO性能与容量解耦并结合数据库RDS的管控架构优势和数据拷贝能力实现云盘的缩容为数据库实现IO性能和云盘容量两方面的极致弹性。 3.2.1 IO突发 高IO负载、波动IO负载是较为常见的两种业务场景。RDS数据库之前接入的ESSD云盘PL1-3其云盘IO性能与容量深度绑定IOPS和带宽上限深受存储容量的限制。在这个限制下应对高IO负载、波动IO负载的高IO洪峰场景时云盘扩容成为了获得更高云盘IO性能的唯一解。 RDS的通用云盘在数据库通过技术创新将云盘的IO性能与存储容量解耦提供IO性能突发能力并可根据实际业务的使用量动态调整云盘的IO上限。高IO负载时自动触发IO突发提升IO上限IO负载回落后自动恢复IO上限实现IO性能的极致弹性避免IO性能和成本浪费。 如下测试图例当开启IO突发后业务IO高峰时RDS实例的IOPS使用率会突破100%。 图2RDS通用云盘IO突发测试 目前RDS通用云盘IO突发功能已支持RDS MySQL、PostgreSQL和SQL Server三款引擎。 3.2.2 云盘缩容
众所周知云盘不支持缩容。但RDS通用云盘借助RDS数据库管控架构和AliSQL内核的优势结合数据拷贝功能实现了RDS云盘缩容。同时基于云盘本身的秒级扩容能力可以让客户根据业务需求自由地调整云盘容量实现云盘容量的极致弹性。 3.3 冷存层特性——数据归档 通用云盘的冷存层数据层采用对象存储OSS作为存储介质将表级别数据归档于OSS中并不影响用户正常查询OSS中归档表数据。开启数据归档功能后客户可通过ALTER TABLE将表文件在ESSD数据盘与OSS对象存储之间切换同时在OSS中的归档表支持正常的查询。 OSS存储成本远低于ESSD所以数据归档功能可以为客户不常访问的表大幅度降低存储成本。数据归档特性较适用于有不常访问或修改的表的业务场景。冷存层通过数据库内核直接访问对象存储和借助JuiceFS访问对象存储OSS两种方式实现数据归档。 3.3.1 数据库内核直接访问对象存储
数据库内核直接访问对象存储是指归档表数据put到OSS中并通过get访问OSS归档表数据。RDS的MySQL引擎主要采用这种方式。值得注意的是为确保归档表的兼容性AliSQL内核采用InnoDB引擎存储格式。因此缓存池扩展能力BPE仍然能够作用于归档表对其查询性能进行加速。 开启数据归档功能后可通过执行ALTER TABLE将正常表上传至OSS转变成归档表也可通过ALTER TABLE将归档表转为正常表。归档表目前仅支持读操作用户可通过SELECT语句访问归档表中的内容。MySQL内核会对用户指定的归档表执行具体操作如下 将数据表对应的ibd文件按照oss_block_size指定的大小默认2MB切分成文件块。利用OSS的sdk将切分后的文件块上传到OSS中。在ESSD数据盘上保留space header文件加速实例的启动和表文件的扫描速度。 图3RDS MySQL冷存归档数据流
3.3.2 借助JuiceFS访问对象存储 借助JuiceFS访问对象存储OSS的数据归档方式主要用于RDS PostgreSQL引擎。 这种方式下开启数据归档功能后RDS PostgreSQL实例除了数据目录外会增加归档目录/cold-jfs及对应的表空间rds_oss。客户可通过ALTER TABLE语句将对应的表转移到rds_oss表空间中。处于rds_oss表空间中的数据会借助JuiceFS文件系统上传到OSS上并不占用ESSD数据盘空间。rds_oss表空间中的所有表均为归档表客户可以用正常的查询语句查询归档表中的数据。 图4RDS PostgreSQL冷存归档数据流 RDS MySQL冷存表只读性能测试结果如下
相比于正常表冷存表的QPS是正常表的15%左右。 4. 总结
性能、弹性、成本是客户实际使用数据库过程中关注的三个重要方面。RDS业界率先推出的通用云盘是PaaS层和IaaS层的深度融合的技术最佳实践通过三层存储架构设计缓存层、数据层和冷存层每一层采用使用不同的存储介质为客户提供同时满足低成本、低延迟、高持久性的体验。