写点什么

全球八大云厂商,谁的 RDS MySQL 性能最强?

作者:NineData
  • 2024-06-03
    浙江
  • 本文字数:3018 字

    阅读完需:约 10 分钟

全球八大云厂商,谁的RDS MySQL性能最强?

在不同的云厂商购买相同规格的 MySQL 实例(如 4vCPU-16GB),获得的性能相同吗?


为了回答上面的疑问,于是就开启了我的云数据库性能测试之旅。这是第二次测试(上次测试参考),本次测试结果如下:


云数据库 RDS MySQL 性能测试趋势图 @202405



QPS 详细数据:



95%延迟详细数据(单位:ms):



如何重复该测试


重现该测试包含了两个方面,一个是测试工具与主要参数,另一个是测试实例的选择。这里选择了模型简单、易于重现的 Sysbench(oltp_read_write)进行测试。Sysbench 的主要参数包括:


  • 测试模型:oltp_read_write

  • --time=300

  • --table_size=10000 --tables=10

  • --skip_trx=on --db-ps-mode=disable

  • --rand-type=uniform

  • 并发线程:4,8,16,32,48,64,96,128,192,256,384,512


测试参考命令:


sysbench oltp_read_write --threads=$conthread --time=$run_time \ --report-interval=3 --percentile=95 --histogram=on --db-driver=mysql \ $sysb_mysql_conn \ --skip_trx=on --db-ps-mode=disable --rand-type=uniform $ssl_param \ --table_size=$table_size --tables=$tables run >> $run_file 2>&1
复制代码


测试实例规格的选择


这里选取了阿里云、华为云、腾讯云、AWS、Azure、Oracle Cloud、Google Cloud 的托管 MySQL 服务(RDS MySQL)作为测试对象。测试实例实例规格满足如下条件:


  • 4vCPU16GB 内存规格,存储 100GB

  • 如果需要选择 IOPS,选择 3000

  • 具备跨可用区的高可用

  • 非常高的数据可靠性级别,同步复制或半同步复制,或者 MGR 复制,或者存储层的同步复制

  • 具备非常好的性能一致性(独享的计算资源)


具体每个云厂商的标准规格选择,参考本文后续各个云厂商对应小结部分。


测试结果综述


腾讯云 TencentDB for MySQL 在本次测试中获得了最高的性能表现,可以说是“遥遥领先”,相比于第二名 AWS 在高并发时,高出约 30%;并且,在测试了杭州、上海两个区域之后,也观察到了较为一致的性能表现。


相比于第一次测试,这次 AWS 表现出了非常好的性能(第二名);这是比较意外的,不过再回头看上次测试中,AWS 也表现出了很好的扩展性,可能当时最大 128 线程并发,并没有压测当时的极限性能。也可以看到,Amazon RDS 在高并发的时候,表现是非常好的。


华为 RDS MySQL 是第三名,相比第一次的“遥遥领先”,本次测试结果上被腾讯云、AWS 超越。


第四名是百度云 RDS,其测试结果与华为云非常接近。另外,百度云的测试结果在北京、广州两个区域做了验证,性能表现较为一致。


第五名是阿里云 RDS MySQL;阿里云是国内最为成熟的云厂商,发展历史更长,产品更加丰富,产品可定制化程度也很高。在本次测试中,阿里云杭州地区的性能有所提高(相比于第一次测试),但不同区域性能不一致的情况依旧较为明显。


Azure 在本次测试中排名第六,在 Azure 上,AMD CPU 似乎是其主推规格,在下面的详细数据中,可以看到 Azure 上 AMD 规格和 Intel 规格较为接近;Intel 性能略高,约高出 6%。


第七名是 Google Cloud,本次选择了更为常用的“Enterprise”版本(而不是“Enterprise Plus”)作为对比版本;对于 Enterprise Plus 版本也做了相应的测试,详细的数据可以参考本文小结“谷歌云 Cloud SQL for MySQL”。


第八名是 Oracle Cloud;这是首次测试 Oracle,所以也对 MySQL@Oracle Cloud 做了比较细致的测试,包括 amd/intel 规格,OCPU 和 ECPU 规格等。


腾讯云 TencentDB for MySQL


本次测试,腾讯云表现出了异常高的性能,并且在北京、上海两个区域,都重现了这一性能表现。另外,这里也额外再测试了一次独享、共享规格的差异。整体上,也如预期,共享规格有这个更好性能。



Amazon RDS for MySQL


本次测试中,Amazon RDS 表现出了非常好的性能,整体上性能排名第二。该性能表现,也在东京和香港两个区域做了验证,两个地区与实例的性能表现较为接近,可以认为 Amazon 有着较为一致的性能表现:



华为云 RDS for MySQL


在本次测试中,华为性能位居第三。相比于第一次的测试,被腾讯云、AWS 超过。


本次也额外对华为云 Kunpeng(ARM)实例进行测试,其性能约为 Intel 规格的 50%~70%;如果需要使用国产架构,则可能要考虑其在性能上的让渡:



百度云  RDS for MySQL


这次百度云 RDS 性能也非常不错,是第四名,与第三名的华为云非常接近。在北京地区的实例,做了两次测试,之后,在广州地区也做了一次测试,整体上差异较小:



其他:选择百度云的时候,也注意到了,目前在百度云上提供的 8 个区域,很多的区域都只有一个可用区可以选择(例如上海)。这也是云厂商早期发展过程中的阶段,当客户量不是很大的时候,新开区域投入成本会很大,这是一个随着客户量逐渐增长,而区域逐渐丰富的阶段。


阿里云 RDS for MySQL


阿里云是国内最为成熟的云厂商,发展历史更长,产品更加丰富,产品可定制化程度也很高,带来的另一个问题是,线上历史机型管理较为复杂。在本次测试中,阿里云杭州地区的性能有所提高(相比于第一次测试),但不同区域性能不一致的情况依旧较为明显。



Azure Database for MySQL


这次测试了 Azure 上的 intel 和 amd 两款 CPU 上的 MySQL 数据库,规格依旧选择了与上次相同的 4c/16gb/100gb。在性能上,intel 略高于 amd 规格,如下:



谷歌云 Cloud SQL for MySQL


在谷歌云上,Cloud SQL 有两个版本选择,Enterprise、Enterprise Plus 版本,本次选择了 Enterprise 作为标准规格,与其他云厂商进行对比。


Enterprise Plus 版本通过使用更新的机型,以及更高效的存储效率,从而提升数据库的性能。关于两个版本差异可以参考:Google Cloud SQL for MySQL的”Enterprise”和”Enterprise Plus”版本。本次对 Enterprise 和 Enterprise Plus 版本进行了一个性能对比,Enterprise Plus 版本又分为开启 data cache 与关闭 data cache 这个场景:



可以看到:


  • GCP 的 Cloud SQL for MySQL 的 Enterprise Plus 版本有着较为明显的性能优势,高出 Enterprise 版本约 58%;

  • 在这个测试模型下(数据量较小),data cache 是否开启对于性能影响并不大


MySQL HeatWave@Oracle Cloud Infrastructure


这是首次测试 Oracle Cloud,所以也对 Oracle Cloud 上的 MySQL 做了比较细致的测试,包括 amd/intel 规格,OCPU 和 ECPU 规格等。此外,在 Oracle Cloud 上是第一个推出 MySQL 8.4 版本的云厂商,这里也一并进行了测试:



相比第一次测试的改进


这是第二次系统的对各个云厂商的数据库进行测试。相比于第一次测试(参考),做了如下的调整:


  • 并发数从 2,4,8,16,24,32,48,64,96,128 调整为 4,8,16,32,48,64,96,128,192,256,384,512

  • 新增了参数--skip_trx=on --db-ps-mode=disable

  • 显式指定参数--rand-type=uniform

  • 性能指更换为 QPS(Queries Per Second),而不再是 TPS(Transactions Per Second)


关于测试的限制说明


这里对测试过程中的一些限制进行补充说明,供参考:

  • 这里以极限情况的吞吐量,也就是 QPS,作为排名指标,反应的的 RDS 极限时的吞吐表现

  • 这里选择的 4vCPU16gb 的规格以供参考,如果选择不同的规格,不同的云厂商的性能表现并不是线性的

  • 在测试时,地域选择较为随机;这里的假设是,相同云厂商相同规格实例在不同区域的性能是接近的,但这并不总是成立

  • 不同云厂商 CPU 规格、内存、磁盘类型均有不同,性能会有较大差异

  • 不同云厂商的高可用架构也有非常大的区别,其所实现的可靠性、可用性等级也会不同,这对性能影响较为明显

  • 有的云厂商的磁盘存储有着多种不同的选择,例如阿里云支持 ESSD PL1/2/3,AWS 也支持 gp3/io1 类型的存储选择,不同的存储选择也会对性能有一些影响

关于作者


周振兴/orczhou,NineData 联合创始人,Oracle ACE(MySQL),《高性能 MySQL》第三、四版译者,曾任阿里云数据库资深专家

用户头像

NineData

关注

NineData公众号(ID:NineData-Cloud) 2022-11-30 加入

玖章算术研发了云原生智能数据管理平台NineData,包含SQL开发、数据复制、备份和对比等功能,轻松完成数据上云、传输、ETL、备份、SQL开发、数据库研发规范、生产变更和敏感数据管理,致力于让每人用好数据和云。

评论

发布
暂无评论
全球八大云厂商,谁的RDS MySQL性能最强?_腾讯云_NineData_InfoQ写作社区