IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    云数据库RDS MySQL性能测试@2024年05月

    admin发表于 2024-06-02 13:46:53
    love 0

    本问是一个系列文章的一部分,该系列较为完整的对各个云厂商的RDS MySQL进行了测试,包括了阿里云、腾讯云、华为云、百度云、AWS、Azure、GCP、Oracle Cloud等,更多参考:云数据库RDS MySQL的性能。

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

    为了回答上面的疑问,于是就开启了我的数据库性能测试之旅。这是第二次测试,上一次是在2023年12月(参考:云数据库(RDS MySQL)性能深度测评与对比)。

    性能测试结果与概述

    详细的性能数据

    QPS详细数据:

    theads/qpsAliyun_HZAWSAzureBaiduGCPHuaweiOracleTencent
    446493607171621571428262337735783
    8750968213050404125514770555710157
    1610951124705579704146868694840316557
    321358618022935211816804214192816622970
    48153122109212148160491001717621800926083
    64158312254013516185541083719927790127886
    96165652493714672203781162220555809230337
    128169962521415210201351211220151808931355
    192173872529615498209151202720648786532323
    256175012539015419210981240321796785132582
    384174942531315487211311236122957780432803
    512181202497515582212041237923177795832962

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

    theads/latency_95Aliyun_HZAWSAzureBaiduGCPHuaweiOracleTencent
    421.1122.2849.2141.8569.2933.7221.8915.83
    825.7423.5254.8345.7987.5637.5631.3718.61
    1636.2429.1961.0853.8599.3341.138.2524.38
    3270.5541.8575.8268.05112.6751.0282.9635.59
    48104.8453.8589.1677.19142.3962.19350.3344.98
    64144.9768.05110.6690.78173.5873.13427.0754.83
    96193.3897.55167.44123.28223.34137.35601.2973.13
    128244.38130.13223.34161.51277.21176.73590.5692.42
    192314.45186.54350.33227.4411.96253.35773.68134.9
    256383.33244.38502.2297.92530.08363.181032.01176.73
    384539.71369.77787.74434.83773.68475.793982.86287.38
    512657.93502.21069.86569.671032.01549.525033.35450.77

    如何重复该测试

    重现该测试包含了两个方面,一个是测试工具与主要参数,另一个是测试实例的选择。

    该测试选择了模型简单、易于重现的Sysbench(oltp_read_write),其主要参数包括:

    • 测试模型: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

    本次测试,腾讯云表现出了异常高的性能,并且在北京、上海两个区域,都重现了这一性能表现。

    规格说明

    • 4vCPU
    • 16000M 内存
    • 100GB 存储
    • 复制模式:Semisync
    • 资源类型:独享(EXCLUSIVE)

    另外,这里也额外再测试了一次独享、共享规格的差异。整体上,也如预期,共享规格有这个更好性能。

    Amazon RDS for MySQL

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

    规格说明

    • db.m6i.xlarge (4vCPU/16GB)
    • 磁盘类型:io1
    • 磁盘大小:100GB
    • iops: 3000
    • 多可用区:true
    • 磁盘加密:true

    华为云 RDS for MySQL

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

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

    规格说明

    • 规格:rds.mysql.x1.xlarge.4.ha(4vcpu16gb)
    • 磁盘类型:CLOUDSSD
    • 复制模式:semisync
    • 存储大小:100GB

    百度云  RDS for MySQL

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

    规格说明

    • cpu_count = 4
    • memory_capacity = 16
    • 磁盘类型:增强型SSD(cloud_enha)
    • 复制类型:semi_sync
    • 参数模板:8.0 默认
    • 资源类型:独享

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

    阿里云 RDS for MySQL

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

    规格说明

    • mysql.x4.large.2c
      • 4vCPU 16GB
      • 独享 / 标准版
    • 磁盘:PL1 100GB
    • 默认参数模板
      • semi-sync

    Azure Database for MySQL

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

    规格说明

    • 规格:
      GP_Standard_D2ds_v4 intel
    • 规格:
      amd/Standard_D4ads_v5/amd
    • 高可用:ZoneRedundant
    • 存储空间:100gb
    • iops:3000

    谷歌云 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这个场景:

    规格说明

    • 规格 :
      • db-custom-4-16384
      • db-perf-optimized-N-4
    • 容灾类型: REGIONAL
    • 地区:香港 / 东京
    • data cache: on / off

    可以看到:

    • GCP的Cloud SQL for MySQL的Enterprise Plus版本有着较为明显的性能优势,高出Enterprise版本约58%;
    • 在这个测试模型下(数据量较小),data cache是否开启对于性能影响并不大

    MySQL HeatWave of Oracle Cloud Infrastructure

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

    规格说明

    • region: ap-tokyo-1
    • 高可用:true (3节点)
    • 存储:100gb
    • MySQL版本:8.0/8.4
    • 实例规格:
      • MySQL.4
      • MySQL.VM.Standard.E4.2.32GB
      • MySQL.VM.Standard.E3.2.32GB

    其他补充说明:与第一次测试的差异

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

    • 并发数从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)

    本问是一个系列文章的一部分,该系列较为完整的对各个云厂商的RDS MySQL进行了测试,包括了阿里云、腾讯云、华为云、百度云、AWS、Azure、GCP、Oracle Cloud等,更多参考:云数据库RDS MySQL的性能。



沪ICP备19023445号-2号
友情链接