[转帖]实测:云RDS MySQL性能是自建的1.6倍

实测,rds,mysql,性能,自建 · 浏览次数 : 0

小编点评

## 4.3.1读写场景 | 云厂商 | QPS | TPS | |---|---|---| | 阿里云 | 11.33 | 1.51 | | 华为云 | 10.20 | 1.35 | |腾讯云 | 11.11 | 1.29 | ## 4.3.2 只读场景 | 云厂商 | QPS | TPS | |---|---|---| | 阿里云 | 1.56 | 0.22 | | 华为云 | 1.25 | 0.18 | |腾讯云 | 1.32 | 0.20 | ## 4.3.3 只写场景 | 云厂商 | QPS | TPS | |---|---|---| | 阿里云 | 1.88 | 0.27 | | 华为云 | 1.72 | 0.25 | |腾讯云 | 1.57 | 0.23 | ## 4.4 补充说明 * 腾讯云-独享分数低是因为在线程数少的时候,性能不高(比自建实例低),即使在后续512线程的时候表现不错,但是在整体上取得的分数不高。 * 在连接数大于2000的时候,AWS连接线程数最高512(超过1024报错)。 ## 4.5 测试结果总结 | 场景 | 云厂商 | QPS | TPS | |---|---|---|---| | 读写 | 阿里云 | 11.33 | 1.51 | | 只读 | 华为云 | 1.25 | 0.18 | | 只写 | 华为云 | 1.72 | 0.25 |

正文

https://www.cnblogs.com/zhoujinyi/p/16392223.html

 

1. 摘要

基于之前写的云厂商 RDS MySQL 怎么选的文章,为了进一步了解各云厂商在RDS MySQL数据库性能上的差异,本文将对自建MySQL、阿里云、腾讯云、华为云和AWS 的 RDS MySQL数据库性能进行对比说明。本文的压测结果仅作为参考,不作为购买建议。

 

2. 测试结果

从本文「测试详情」里的各个结论中得到如下结果

说明100分制,按照本文后面测试详情结论进行评分。评分规则比较简单:最好的为100分,其次按照和100分的比值进行打分,如「自建-Percona」的QPS为1000,得分100分,「自建-MySQL」的QPS为900,则得90分。

补充:通用的性能可能会比独享高20%~30%,价格也比独享低,是因为通用存在超卖现象。但也有可能受超卖影响导致稳定性不高,请根据实际情况选择使用。

 

具体的信息可以看:「实测:云RDS MySQL性能是自建的1.6倍」,该内容同步发布于微信公众号:「云数据库技术」,欢迎订阅,第一时间获取信息。

 

3. 测试说明

为更好的对比各个云厂商数据库的性能,使用压测工具sysbench,该工具是一个开源的、模块化的、跨平台的多线程性能测试工具,可以用来进行CPU、内存、磁盘I/O、线程、数据库的性能测试。

3.1 测试指标(sysbench值)

  • 每秒执行事务数TPS(Transactions Per Second)

  • 每秒执行请求数QPS(Queries Per Second)

3.2 测试说明

  • 分3个场景进行测试:「读写」、「只读」、「只写」,每个场景进行2~3000个线程压测,取压测下的QPS、TPS的平均值之和作为性能对比指标。

  • 实例规格分独享规格和通用规格:

  • 独享规格:每个集群会独占所分配到的计算资源(如CPU),而不会与同一服务器上的其他集群共享资源,性能稳定可靠
  • 通用规格:同一服务器上的不同集群,会互相充分利用彼此空闲的计算资源(如CPU),通过复用计算资源享受规模红利,会出现超卖现象(性能更好,可能会受同一物理机上的其他通用规格实例影响),性价比高,稳定性不高

  

4. 测试详情

4.1 测试环境

  • 异步复制

  • 数据超过 innodb_buffer_pool_size

  • 高性能模板参数 

    复制代码
    sync_binlog                     = 1000
    innodb_flush_log_at_trx_commit  = 2
    innodb_flush_method             = O_DIRECT
    innodb_buffer_pool_size         = 12gb
    innodb_flush_neighbors          = 0
    max_prepared_stmt_count         = 1048575
    
    #Percona
    thread_handling                 = pool-of-threads
    复制代码
  • 实例规格

  • 客户端规格

  补充

    • 自建MySQL/Percona部署在阿里云的ECS上,数据盘是PL2(PL2规格的磁盘空间需要大于500G)

    • Percona Server 使用线程池功能

    • 主从服务端和客户端都在同一可用区和VPC

    • 各云厂商的RDS实例参数(除高性能模板参数外)均保持默认

    • 华为云的通用型规格是云盘SSD

4.2 测试方法

复制代码
-- 准备数据
sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=10000000 --tables=10 --events=0 --time=300  --threads={2~3000} oltp_read_write prepare

-- 运行workload
# OLTP读写混合
sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=10000000 --tables=10 --events=0 --time=300   --threads={2~3000} --percentile=95 --report-interval=1 oltp_read_write run

# OLTP只读场景
sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=10000000 --tables=10 --events=0 --time=300  --threads={2~3000} --percentile=95 --skip-trx=1 --report-interval=1 oltp_read_only run

# OLTP只写场景
sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=10000000 --tables=10 --events=0 --time=300   --threads={2~3000} --percentile=95 --report-interval=1 oltp_write_only run

-- 清理数据
sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=10000000 --tables=10 --events=0 --time=300   --threads={2~3000} --percentile=95  oltp_read_write/oltp_read_only/oltp_write_only cleanup
复制代码

4.3 测试场景

对读写、只读、只写三个场景,线程数从2到3000进行压测说明。

4.3.1 读写场景

QPS:

TPS:

读写场景结论

  • 阿里云的通用型比独享型性能高23%;腾讯云的通用型比独享型性能高52%;华为云的通用型比独享型性能高8%。自建的Percona Server比社区版的MySQL 性能高7%;

  • 「自建-MySQL」没有支持线程池,在512线程池之后,性能逐步下降;

  • 「腾讯云-独享」在16线程之前性能不高,随着线程增加性能逐步上升,并保持稳定;

  • 「自建MySQL/Percona」在2个线程的时候,性能比各云厂商的性能好;在4线程的时候和个云厂商性能差不多(腾讯云除外),在8个线程之后就远落后于个云厂商(腾讯云-独享除外);

 

从QPS和TPS的平均值之和,性能从高到低依次排序为:「阿里云-通用」>「华为云-通用」> 「腾讯云-通用」> 「华为云-独享」> 「阿里云-独享」> 「自建-Percona」> 「自建-MySQL」> 「AWS」> 「腾讯云-独享」

 

4.3.2 只读场景

QPS:

TPS:

只读场景结论:

  • 阿里云的通用型比独享型性能高30%;腾讯云的通用型比独享型性能高59%;华为云的通用型和独享型性能接近。自建的Percona Server比社区版的MySQL 性能高9%;

  • 「自建-MySQL」没有支持线程池,在512线程池之后,性能逐步下降;

  • 「腾讯云-独享」在32线程之前性能不高,随着线程增加性能逐步上升,并保持稳定(慢热);

  • 「自建MySQL/Percona」在4个线程之前,性能比各云厂商的性能好(除AWS和华为云-独享);在8个线程之后低于各云厂商(腾讯云-独享除外),32个线程的时候,「自建MySQL」开始低于「腾讯云-独享」,「腾讯云-独享」和「自建-Percona」相近。

 

从QPS和TPS的平均值之和,性能从高到低依次排序为:「华为云-独享」>「阿里云-通用」> 「华为云-通用」> 「腾讯云-通用」> 「阿里云-独享」> 「自建-Percona」> 「AWS」> 「自建-MySQL」> 「腾讯云-独享」

 

4.3.3 只写场景

QPS:

TPS:

只写场景结论:

  • 阿里云的通用型比独享型性能高26%;腾讯云的通用型比独享型性能高39%;华为云的通用型比独享型性能高78%。自建的Percona Server比社区版的MySQL 性能高7%;

  • 「自建-MySQL」没有支持线程池,在512线程池之后,性能逐步下降;

  • 「腾讯云-独享」在32线程之前性能不高,随着线程增加性能逐步上升,并保持稳定(慢热);

  • 「自建MySQL/Percona」在8个线程之前,性能比各云厂商的性能好(除AWS外);在8个线程之后低于各云厂商,「华为云-独享」和「自建MySQL」相近。

 

从QPS和TPS的平均值之和,性能从高到低依次排序为:「华为云-通用」>「阿里云-通用」> 「腾讯云-通用」> 「阿里云-独享」> 「AWS」> 「腾讯云-独享」> 「自建-Percona」> 「自建-MySQL」> 「华为云-独享」

 

4.4 补充说明

  • 「腾讯云-独享」分数低是因为在线程数少的时候,性能不高(比自建实例低),即使在后续512线程的时候表现不错,但是在整体上取得的分数不高。

  • 线程池在大量短连接或者高并发情况下,有比较好的表现,没有支持线程池的「自建MySQL」和「AWS」在连接数大于2000的时候性能下降明显。

  • 「自建MySQL/Percona」在2~4个线程的压力下,整体性能比RDS要好,如果实例压力很小,可以使用自建的方式部署,不然用云数据库是首选。

  • AWS 连接线程数最高512(超过1024报错),另外还需要额外购买IOPS,本文压测的时候IOPS没有买到最大值,gp2和io1的区别可以看官方文档说明。

  • 「阿里云-独享」连接线程数最高为2400,因为3000超过了max_user_connections参数(规格限制了)。

  • 本文的测试结果是从5月份测试报告中得出,期间各云厂商可能有新功能发布和硬件升级,可能在看到文章的时候某些结论已经有所不同。

4.5 测试小结

通过对「读写」、「只读」、「只写」场景下的压测,并取压测结果QPS、TPS的平均值之和来统计,得到也可以直接看文章开头部分的测试结果):

  • 读写混合场景:「阿里云-通用」的性能最高,高出「华为云-通用」6%,高出「腾讯云-通用」13%,高出「华为云-独享」14%,高出「阿里云-独享」23%,高出「自建Percona」51%,高出「自建-MySQL」61%,高出「AWS」66%,高出「腾讯云-独享」72%。

  • 只读场景:「华为云-独享」的性能最高,高出「阿里云-通用」1%,高出「华为云-通用」3%,高出「腾讯云-通用」8%,高出「阿里云-独享」31%,高出「AWS」52%,高出「自建Percona」53%,高出「自建-MySQL」66%,高出「腾讯云-独享」72%。

  • 只写场景:「华为云-通用」的性能最高,高出「阿里云-通用」4%,高出「腾讯云-通用」7%,高出「阿里云-独享」31%,高出「AWS」40%,高出「腾讯云-独享」49%,高出「自建Percona」63%,高出「自建-MySQL」75%,高出「华为云」78%。

5. 总结

通过测试详情的说明,得出本文开头部分的「测试结果」,希望通过本文,对大家在选择云厂商RDS MySQL产品时有帮助。 

最后,通过云厂商 RDS MySQL 怎么选和本文的说明,可以看到「云RDS MySQL」无论在产品周边的运维能力还是性能上都明显优于「自建MySQL实例」,并且在高并发的压力下尤为突出。所以在业务允许的情况下,上云是一个非常不错的选择。

与[转帖]实测:云RDS MySQL性能是自建的1.6倍相似的内容:

[转帖]实测:云RDS MySQL性能是自建的1.6倍

https://www.cnblogs.com/zhoujinyi/p/16392223.html 1. 摘要 基于之前写的「云厂商 RDS MySQL 怎么选」的文章,为了进一步了解各云厂商在RDS MySQL数据库性能上的差异,本文将对自建MySQL、阿里云、腾讯云、华为云和AWS 的 RDS

[转帖]MySQL该使用哪种CPU架构服务器?

https://www.cnblogs.com/zhoujinyi/p/16880861.html 1. 摘要 近期,阿里云推出基于 ARM 架构的 RDS MySQL 和 RDS PostgreSQL 实例,现处于邀测阶段,阿里云宣传 ARM 架构的亮点是:在价格下降13%的基础上,平均性能 AR

[转帖]基于腾讯云微服务引擎(TSE) ,轻松实现云上全链路灰度发布

https://my.oschina.net/u/4587289/blog/8570699 1. 概述 软件开发过程中,应用发布非常频繁,通常情况下,开发或运维人员会将系统里所有服务同时上线,使得所有用户都使用上新版本。这样的操作时常会导致发布失败,或因发布前修改代码,线上出现 Bug。 假设一个在

[转帖].NET 7 正式发布

https://www.oschina.net/news/216967/dotnet-7-released 微软宣布正式推出 .NET 7 ,使用 .NET 7 可以轻松地将 .NET 7 项目容器化,在 GitHub 操作中设置 CI/CD 工作流,并实现云原生可观察性。 .NET 7 是标准期限

[转帖]编译实战 | 手摸手教你在Windows环境下运行Redis6.x

原创:微信公众号 码农参上,欢迎分享,转载请保留出处。 哈喽大家好啊,我是没事就愿意瞎捣鼓的Hydra。 不知道有没有小伙伴像我一样,平常开发中用的是windows操作系统,有时候想装点什么软件,一看只支持linux系统,无奈要么启动虚拟机、要么装在云服务器上。 这不前几天又是这样,刚想用一下Red

[转帖]性能最高提升36%!基于阿里云倚天实例的Redis性能测试验证

性能最高提升36%!基于阿里云倚天实例的Redis性能测试验证 https://aijishu.com/a/1060000000376643 云计算Benchmark性能优化Arm 处理器Alibaba 本文转载自阿里云开发者社区。https://developer.aliyun.com/... 简

[转帖]使用Rclone实现minio数据的迁移

使用Rclone实现minio数据的迁移 一、准备 1.1 使用工具 rclone:开源的对象存储在线迁移工具,用于文件和目录的同步,支持阿里云的oss、minio 、亚马逊S3 等。 1.2 注意事项 1、两台机器的时区及时间要保持一致,最后进行迁移之前,两台机器的时间进行校准。方法如下: #ce

[转帖]阿里云SSD云盘性能测试:每GB空间30个IOPS

http://www.piaoyi.org/linux/aliyun-SSD-disk-test.html 正 文: 由于服务器需要高并发高IO,所以入手了阿里云的SSD云盘+IO优化的ECS实例。 阿里云SSD云盘:单盘最高提供20000随机读写IOPS、256MB/s吞吐量的存储性能。采用分布式

[转帖]云原生时代数据库运维体系演进

https://www.jianshu.com/p/64019c3b09d1 作者:vivo 互联网服务器团队- Deng Song 本文根据邓松老师在“2022 vivo开发者大会"现场演讲内容整理而成。 数据库运维面临着大规模数据库实例难以有效运维、数据库难以做好资源弹性伸缩以及个人隐私数据安全

【转帖】虚拟化与云计算技术硬核内幕

这种将物理硬件分配给多个使用者的技术,叫做“时分复用”。计算机操作系统的任务调度模块,实质上提供的就是将CPU以“时分复用”的方式给不同任务使用的机制。 那么,如果在虚拟化系统中,也利用时分复用机制,将一个物理CPU或HT分配给多个虚拟机使用,就可以让多个虚拟机共用1个物理HT,也就是在虚拟机操作系