< orczhou.com

全球八大云厂商RDS MySQL性能对比

在不同的云厂商,购买相同规格的 MySQL 实例,获得的性能相同吗?本文使用 Sysybench,对不同云厂商的同样规格“4vCPU-16GB”进行性能测试来尝试回答上述问题。

Sysbench QPS 详细数据

dataaliyunawsazurebaidugooglehuaweioracletencent
465811705145919721752282336756413
81054233832870384430585163657810496
1616609667053197066539893601045619062
3226390130329246122898626160891170726871
48304221888911743162749817210671222130822
643288823324131011915310872243191292132500
963546327979142672163510899259051284135771
1283619230681145502220811006246341354239228
1923839133402145282273510874250481278544717
2563754334080141602300910888254621368046125
3843751334071145982260010865258481386046413
5123859033612147772265210928269361345246814

Latency (Event) 详细数据

如下表格分别为:平均延迟 和 95%延迟数据。单位为:毫秒/ms。

dataaliyunawsazurebaidugooglehuaweioracletencent
410.9442.2349.3436.5141.0925.5119.6011.23
813.6642.5650.1637.4647.0827.8921.8913.72
1617.3443.1754.1340.7553.3530.7727.5415.11
3221.8244.1962.2946.8766.7635.8049.2021.42
4828.4045.7373.5653.0987.9841.0170.7028.03
6435.0249.3887.9160.14105.9447.3689.1635.44
9648.7261.75121.0979.86158.5166.69134.5448.30
12863.6575.08158.31103.73209.2693.51170.0958.72
19290.01103.44237.81151.97317.68137.94270.2277.27
256122.71135.18325.28200.21423.12180.92336.6799.88
384184.18202.80473.18305.70635.50267.27498.30148.89
512238.72274.02623.17406.61842.19341.93684.53196.77
dataaliyunawsazurebaidugooglehuaweioracletencent
414.2144.9856.8439.6552.8929.7226.6813.22
817.0144.1756.8441.8569.2932.5332.5316.41
1620.7444.9862.1946.6381.4836.8944.9818.61
3231.3748.3471.8357.87116.8043.3989.1627.66
4841.1051.0287.5669.29139.8550.11118.9237.56
6452.8958.92108.6881.48161.5157.87153.0249.21
9677.1980.03155.80114.72219.36102.97215.4466.84
12897.5594.10200.47150.29282.25123.28248.8382.96
192125.52147.61303.33211.60427.07196.89383.33108.68
256164.45207.82419.45277.21559.50282.25458.96139.85
384248.83308.84612.21397.39831.46502.20657.93204.11
512320.17404.61787.74520.621089.30502.20893.56267.41

MySQL 参数对比表格

dataaliyunawsazurebaidugooglehuaweioracletencent
have_sslDISABLEDYESYESDISABLEDYESDISABLEDYESDISABLED
innodb_buffer_pool_size9.75GB11GB12GB12GB11GB9GB17GB12GB
innodb_doublewriteONOFFOFFONONONONON
innodb_flush_log_at_trx_commit11111111
innodb_flush_methodO_DIRECTO_DIRECTfsyncfsyncO_DIRECTO_DIRECTO_DIRECTO_DIRECT
innodb_io_capacity200002002002000500012000125020000
innodb_read_io_threads44NA84424
innodb_write_io_threads44NA84444
log_binONOFFONONONONONON
performance_schemaOFFOFFONOFFONOFFONOFF
rpl_semi_sync_master_enabledONNANAONNAONNAON
rpl_semi_sync_master_timeout1000NANA10000NA10000NA10000
sync_binlog11110001111
thread_pool_size8NA4NA4NA164
version8.0.368.0.438.0.42-azure8.0.32-4.0.0.58.0.41-google8.0.41-2509008.0.40-u8-cloud8.0.30-txsql
instance_typemysql.x4.large.2cdb.m7i.xlargeGP_Standard_D4ads_v54db-custom-4-16384rds.mysql.x1.xlarge.4.haMySQL.44c
storage_typecloud_essdio1NAcloud_enhaNACLOUDSSDNAEXCLUSIVE
storage_size100100100100100100100100
storage_iopsNA30003000NANANANANA
cpu_capacity123.9145.373.674.254.6148.3120.9138.1

更多历史测试

2025年07月 性能测试趋势图

2025年04月 性能测试趋势图

2025年01月 性能测试趋势图

2024年09月 性能测试趋势图

2024年05月 性能测试趋势图

关于本次测试更多详细说明:云数据库MySQL性能测试@2024年05月

关于该测试

当在不同的云厂商之间迁移时,数据库的性能是需要重点关注的点。那么,不同的云厂商之间的相同规格实例是不是就可以直接迁移呢?他们之间差异大吗?经过上述的系列测试,我们发现:

  • 不同的云厂商之间性能差距非常大
  • 即便同一个云厂商,不同的区域之间相同规格性能也有差距
  • 即便同一个云厂商,不同时间阶段,相同规格性能也有差距

上述的差异现象,并不是孤立,几乎每个厂商都有类似的问题。有的云厂商性能管理更好,差异会小一些,性能更加稳定,而有的云厂商性能差异则比较大。

如何重现该测试

重现该测试包含了两个方面,一个是测试工具与主要参数,另一个是测试实例的选择。如下两节分别描述这两部分。

该测试选择了模型简单、易于重现的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复制,或者存储层的同步复制
  • 具备非常好的性能一致性(独享的计算资源)

具体每个云厂商的标准规格选择,参考:云数据库RDS MySQL性能测试与对比@2024年05月文中对各个云厂商小结部分。

为什么相同规格性能差异这么大

这是一个比较复杂的问题。该问题作者参加的2024年1月的ACMUG(中国MySQL用户组)大会上的做了分享(参考),如下为分享的PDF,供参考:

概要小结如下:

  • 不同云厂商相同的4vCPU规格,其计算能力差异很大
  • 不同云厂商 RDS 的高可用架构有一定的差异,这对性能影响也大
  • 想通的云厂商,不同阶段上线的实例,使用的CPU代际不同,性能相差明显

关于该测试的限制

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

  • 在本系列的的测试中,地域选择较为随机,例如阿里云选择了杭州、百度云选择北京、AWS/谷歌云选择了东京、Azure云选择了美东/香港/东京等。这里的一个假设是,各个云厂商在各个区域的RDS MySQL性能应该是相同或者接近的。
  • 首先于个人的时间与资源,这里仅对较为常用的4vCPU16GB的规格进行测试,单次并发测试持续时间为300秒。
  • 虽然都是用MySQL 8.0版本,但是不同的厂商的数据库小版本也会不同。
  • 不同厂商的CPU、磁盘类型、价格等各有不同,所以这不是一个完全对等的测试,也不可能是。
  • 不同厂商的RDS实例的默认参数模板也各有不同,甚至同一个厂商在不同阶段的参数也可能会有调整。
  • 有的云厂商的磁盘存储有着多种不同的选择,例如阿里云支持ESSD PL1/2/3,AWS也支持gp3/io1类型的存储选择,不同的存储选择也会对应这个不同的性能。
  • 关于可用区的选择:在测试中,尽量会将测试的ECS/EC2/VM等与数据库主节点放在同一个可用区。但依旧有一些情况做不到这一点。例如在这次的测试过程中,GCP在东京地区b可用区,虽然可以创建数据库,但是却没有资源创建VM节点(“A n2-highcpu-8 VM instance is currently unavailable in the asia-northeast1-b zone.”)。

如果有更多建议,可以在本文后留下你的建议,以供后续参考与改进。

其他补充说明

关于Sysbench测试

这里使用常用的、易用重现的Sysbench工具进行测试。主要的模型包括oltp_read_write以及部分自定义模型。Sysbench因为其易用使用,可定制性高被业绩广泛使用,包括AWSGoogle Cloud阿里云腾讯云等。

sysbench的oltp_read_write模型是一个事务压测模型,单个事务中包含了10个点查、4个范围查询(包括了ORDER BY/SUM/DISTINCT等)、影响索引的更新、不影响索引的更新、删除数据、插入数据。关于该测试模型的详细说明可以参考文章:

整体上,在不同的平台上ARM-based的RDS MySQL有着不同的表现。具体如下:

Graviton vs x86 on AWS

  • 在AWS上,Graviton 3实例RDS性能在高并发时,相对x86有较明显的性价比优势,以128并发为例,m7g vs m6i的对比
  • Graviton 3 相比Graviton 2有非常明显的性能优势(参考),这与宣称的27%性价比提升是较为一致的
  • Graviton 2实例相比x86几乎没有什么优势,与宣称的52%性价比提升结果相悖

ARM vx x86 on 阿里云

  • 经济版(ARM)比标准版(x86)性价比要高出32%
  • 具体的:选取16并发,ARM版TPS为2185,x86版TPS为2324。价格上, ARM版价格为1.61元/时, x86版价格为2.52元/时,那么对应每1000个TPS的价格分别为:0.74元与1.08元。从性价比的角度来看,经济版提升了31.5%

鲲鹏 vs x86 on 华为云

  • x86和鲲鹏架构实例价格是相同的
    鲲鹏版本相比x86约有15~45%的性能差距
  • 考虑到自研鲲鹏芯片在中国自主可控芯片中的地位,在国内大量无法使用x86的场景中,这个性能下降通常都是可以接受

其他实用结论

先说些一些基于测试的实用结论吧,可以让更多的开发者参考:

  1. 不同的云厂商,有着不同的存储架构,不同的安全性/性能考虑,不同的CPU类型/多寡等,看似相同的规格,性能却有着巨大的差异
  2. 在阿里云上,强烈建议考虑使用经济版(ARM)替换标准版(x86),很容易获得超30%的性价比(参考
  3. 总是建议使用最新一代CPU实例,通常都可以获得15%的性价比提升,例如AWS m6i vs m5i,m7g vs m6g(参考
  4. 几大云厂商的”企业级”实例的性能有着显著差异,主要原因是主从复制架构、CPU代差、存储架构等不同导致(参考
  5. 国内云厂商都提供了“通用型”实例,以非常小的资源共享换取了非常大的性价比提升,非常适合非关键场景使用(参考

首次测试

第一次做该系列的测试是2023年12月,当时测试结果如。但因为,后续的测试做了比较多的改进,故该数据可以用于参考,但不能与后续数据直接对比。

更多关于本次测试说明参考:点击查看详情

更多测试计划

该项目主要是个人投入进行,故并无严格时间规划。

  • 2025年计划:5月、9月、12月再各发布一次测试数据
  • 考虑新增价格数据,以便进行价格对比

更多相关测试文章与本文目录

One response to “全球八大云厂商RDS MySQL性能对比”

  1. 云厂商A

    是否能增加测试的数据量?

Leave a Reply

Your email address will not be published. Required fields are marked *