当前位置:网站首页>实测:云RDS MySQL性能是自建的1.6倍
实测:云RDS MySQL性能是自建的1.6倍
2022-07-27 14:50:00 【洛蕾】
优质资源分享
| 学习路线指引(点击解锁) | 知识定位 | 人群定位 |
|---|---|---|
| 🧡 Python实战微信订餐小程序 🧡 | 进阶级 | 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。 |
| Python量化交易实战 | 入门级 | 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统 |
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
- 自建MySQL/Percona部署在阿里云的ECS上,数据盘是PL2(PL2规格的磁盘空间需要大于500G)
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实例」,并且在高并发的压力下尤为突出。所以在业务允许的情况下,上云是一个非常不错的选择。
边栏推荐
- The difference between select/poll/epoll
- CCF-201312-1
- Script file ‘D:\programs\anaconda3\Scripts\pip-script.py‘ is not present.
- The first week of C language learning - the history of C language
- Json数据的格式使用
- Yys mouse connector
- Bean: the difference between model and entity
- json数据解析
- Solve the problem that ${pagecontext.request.contextpath} is invalid
- Clear understanding of torchvision (mind map)
猜你喜欢

Reduce PDF document size (Reprint)

(二)动态卷积之Dynamic Convolution

Collection! 0 basic open source data visualization platform flyfish large screen development guide

SolidWorks simulation curve attribute setting

EXE程序加密锁

字节跳动服务网格基于 Hertz 框架的落地实践

201403-1

The class declared by the scala object keyword directly calls methods and associated objects
Interpretation of C basic syntax: summarize some commonly used but easily confused functions (i++ and ++i) in the program (bit field)

知网、万方数据库免费下载论文------比连接学校内网速度快数倍不止(有的学校万方数据库不支持下载)
随机推荐
google chrome revercecaptcha广告屏蔽
Some queries of TP5
Great Cells & Counting Grids
Polynomial locus of order 5
(2) Dynamic convolution of dynamic convolution
Draw circuit diagram according to Verilog code
Array analog linked list
SolidWorks simulation curve attribute setting
string数字类型转换为千分位
jupyter 创建虚拟环境并安装pytorch(gpu)
除了「加机器」,其实你的微服务还能这样优化
OpenCV(一)——图像基础知识
Use of arrow function
[paper reading] a CNN transformer hybrid approach for cropclassification using multitemporalmultisensor images
Replication of complex linked list
TP5 rewrite paging
低代码是开发的未来吗?浅谈低代码平台
Exe program encryption lock
After the cubemx is reconfigured, the generated code cannot be opened successfully with IAR
Supplement - example of integer programming