磁盘类型选择对阿里云RDS MySQL的性能影响

测试说明

这是一个云数据库性能测试系列,旨在通过简单标准的性能测试,帮助开发者、企业了解云数据库的性能,以选择适合的规格与类型。这个系列还包括:

* 云数据库(RDS MySQL)性能深度测评与对比

* 阿里云RDS标准版(x86) vs 经济版(ARM)性能对比

* 华为云RDS通用型(x86) vs 鲲鹏(ARM)架构的性能对比

* AWS基于x86 vs Graviton(ARM)的RDS MySQL性能对比(二)

* AWS基于x86 vs Graviton(ARM)的RDS MySQL性能对比

阿里云RDS存储类型概述

阿里云RDS提供了较为丰富的存储类型选择,包括ESSD PL0、ESSD PL1、ESSD PL2、ESSD PL3、通用云盘、本地SSD。其中ESSD PL0仅在非常小的经济型规格中提供,并不在测试范围内。

根据阿里云的官方文档可以看到,从PL0到PL3,性能越来越强,并且IO能力也越来越稳定(详细参考:ESSD云盘@阿里云文档中心),当然价格也越来越贵。这里摘抄了文档中的描述,以及关键的部分,对比如下:

**"通用云盘"**的说明可以参考阿里云文档描述:"通用云盘兼容ESSD云盘的所有特性,性能与ESSD PL1云盘相同,在ESSD云盘的基础上提供了IO突发能力。"

所以,可以这样理解,通用云盘是一种具备ESSD PL1能力,同时具备更加灵活的IOPS突发增长能力的云盘。突发IOPS部分,将额外计费(有少部分的免费额度),突发IOPS部分的额外费用为:0.02元/万IO。

不同存储类型的性能趋势对比

那么,我们看看在RDS MySQL中这些不同的存储的性能表现。这里依旧选择了"企业级规格"进行比较(企业级规格的定义可以参考:云数据库(RDS MySQL)性能深度测评与对比),详细的性能如下:

可以看到:

*****对于几种云盘的存储,RDS表现出了较为一致的性能,即,使用更好的存储的RDS总是能够获得了更好的性能:ESSD PL3 > ESSD PL2 > 通用存储 >> ESSD PL1

*****本地SSD,性能则是最差的存储,相较于ESSD PL1要低9%;相较于性能最好的ESSD PL3则要低18.7%。这一点与预期是不同的。

*****不过,相较于ESSD PL1/2/3之间成倍的价格增长,从这里的测试性能并没有展示出那么大的差距。即ESSD PL3的性能确实更好了,但是性价比是在降低的。

特别说明

注意到,在本次测试的规格"4vCPU16GB-高可用-独享-标准-默认参数模板-MySQL 8.0-ESSD PL1″与上次的"云数据库(RDS MySQL)性能深度测评"中的同样规格表现出了非常不同的性能。这次的测试中,相比上一次测试的同样规格性能要高约:41%。

经过一些额外的测试,注意到,这个明显的性能差异是由于RDS所使用的不同CPU类型的性能差异所导致的,相当于AWS RDS实例中的m6i.xlarge(第三代Intel Xeon/Ice Lake实例)与m5.xlarge(Xeon® Platinum 8175M or 8259CL)之间的性能差异。只是,在阿里云,并没有通过规格代码将该选项暴露给用户。

所以,用户在购买RDS时,也需要注意,可以向阿里云的工程师咨询,如何通过地区、可用区或其他选项,以购买到最新代际的CPU所对应的RDS,获取更好的性能,如果性能对你的业务非常重要的时候。

对于其他云厂商,可能都会有类似的问题,也是需要注意的。不过因为阿里云RDS采用量更大、上线时间也更长,用户可能更容易遇到此类问题。

测试方法说明

参考文章"云数据库(RDS MySQL)性能深度测评"中的"测试方法说明"部分。

补充说明

*****以上价格为2023年12月,阿里云国内站杭州地区价格

*****在RDS选购中,ESSD PL2最低存储空间为500GB,PL3最低则为1500GB。这也会导致PL2、PL3存储成本会进一步增加,如果你使用的存储空间不需要那么大的话

*****这里选择的"企业级规格"是"4vCPU16GB-高可用-独享-标准-默认参数模板-MySQL 8.0″类型,选择了杭州J+K可用区,测试的ECS也在J可用区

*****这里使用的测试方法,对于IO依赖较强的是事务IO持久化的过程,数据文件写入一般来说并不会是瓶颈,这也限制了该测试对于某些现实场景的参考意义。对于CPU密集型的应用,例如,绝大部分的数据多缓存在内存中的场景,这也是较为常见的,该测试依旧有非常强的参考价值

关于作者:关于作者:orczhou,云数据库技术专家,NineData联合创始人,Oracle ACE(MySQL),《高性能MySQL》第三、四版译者,曾任阿里云数据库资深专家。

相关推荐
yangchanghua1111 小时前
pgsql 如何查询今天范围内的数据(当天0点0分0秒 - 当天23点59分59秒....)
数据库·pgsql
larance1 小时前
SQLAlchemy 的异步操作来批量保存对象列表
数据库·python
python_chai1 小时前
从数据汇总到高级分析,SQL 查询进阶实战(下篇)—— 分组、子查询与窗口函数全攻略
数据库·sql·mysql
飞雪20072 小时前
Alibaba Cloud Linux 3 在 Apple M 芯片 Mac 的 VMware Fusion 上部署的完整密码重置教程(二)
linux·macos·阿里云·vmware·虚拟机·aliyun·alibaba cloud
在努力的前端小白2 小时前
Spring Boot 敏感词过滤组件实现:基于DFA算法的高效敏感词检测与替换
java·数据库·spring boot·文本处理·敏感词过滤·dfa算法·组件开发
未来之窗软件服务2 小时前
自建知识库,向量数据库 (九)之 量化前奏分词服务——仙盟创梦IDE
数据库·仙盟创梦ide·东方仙盟·自建ai·ai分词
MX_93595 小时前
阿里云参数配置化
阿里云·云计算
冒泡的肥皂5 小时前
MVCC初学demo(一
数据库·后端·mysql
AKAMAI5 小时前
通过自动化本地计算磁盘与块存储卷加密保护数据安全
人工智能·云计算
.Shu.6 小时前
Redis Reactor 模型详解【基本架构、事件循环机制、结合源码详细追踪读写请求从客户端连接到命令执行的完整流程】
数据库·redis·架构