1.摘要
基于之前写的「云厂商RDSMySQL怎么选」的文章,为了进一步了解各云厂商在RDSMySQL数据库性能上的差异,本文将对自建MySQL、阿里云、腾讯云、华为云和AWS的RDSMySQL数据库性能进行对比说明。本文的压测结果仅作为参考,不作为购买建议。
2.测试结果
从本文「测试详情」里的各个结论中得到如下结果:
说明:分制,按照本文后面测试详情的结论进行评分。评分规则比较简单:最好的为分,其次按照和分的比值进行打分,如「自建-Percona」的QPS为0,得分分,「自建-MySQL」的QPS为,则得90分。
补充:通用的性能可能会比独享高20%~30%,价格也比独享低,是因为通用存在超卖现象。但也有可能受超卖影响导致稳定性不高,请根据实际情况选择使用。
具体的信息可以看:「实测:云RDSMySQL性能是自建的1.6倍」,该内容同步发布于 补充:
自建MySQL/Percona部署在阿里云的ECS上,数据盘是PL2(PL2规格的磁盘空间需要大于G)
PerconaServer使用线程池功能
主从服务端和客户端都在同一可用区和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=00000--tables=10--events=0--time=--threads={2~}oltp_read_writeprepare--运行workload#OLTP读写混合sysbench--db-driver=mysql--mysql-host=XXX--mysql-port=XXX--mysql-user=XXX--mysql-password=XXX--mysql-db=sbtest--table_size=00000--tables=10--events=0--time=--threads={2~}--percentile=95--report-interval=1oltp_read_writerun#OLTP只读场景sysbench--db-driver=mysql--mysql-host=XXX--mysql-port=XXX--mysql-user=XXX--mysql-password=XXX--mysql-db=sbtest--table_size=00000--tables=10--events=0--time=--threads={2~}--percentile=95--skip-trx=1--report-interval=1oltp_read_onlyrun#OLTP只写场景sysbench--db-driver=mysql--mysql-host=XXX--mysql-port=XXX--mysql-user=XXX--mysql-password=XXX--mysql-db=sbtest--table_size=00000--tables=10--events=0--time=--threads={2~}--percentile=95--report-interval=1oltp_write_onlyrun--清理数据sysbench--db-driver=mysql--mysql-host=XXX--mysql-port=XXX--mysql-user=XXX--mysql-password=XXX--mysql-db=sbtest--table_size=00000--tables=10--events=0--time=--threads={2~}--percentile=95oltp_read_write/oltp_read_only/oltp_write_onlycleanup
4.3测试场景
对读写、只读、只写三个场景,线程数从2到进行压测说明。
4.3.1读写场景
QPS:
TPS:
读写场景结论:
阿里云的通用型比独享型性能高23%;腾讯云的通用型比独享型性能高52%;华为云的通用型比独享型性能高8%。自建的PerconaServer比社区版的MySQL性能高7%;
「自建-MySQL」没有支持线程池,在线程池之后,性能逐步下降;
「腾讯云-独享」在16线程之前性能不高,随着线程增加性能逐步上升,并保持稳定;
「自建MySQL/Percona」在2个线程的时候,性能比各云厂商的性能好;在4线程的时候和个云厂商性能差不多(腾讯云除外),在8个线程之后就远落后于个云厂商(腾讯云-独享除外);
从QPS和TPS的平均值之和,性能从高到低依次排序为:「阿里云-通用」「华为云-通用」「腾讯云-通用」「华为云-独享」「阿里云-独享」「自建-Percona」「自建-MySQL」「AWS」「腾讯云-独享」
4.3.2只读场景
QPS:
TPS:
只读场景结论:
阿里云的通用型比独享型性能高30%;腾讯云的通用型比独享型性能高59%;华为云的通用型和独享型性能接近。自建的PerconaServer比社区版的MySQL性能高9%;
「自建-MySQL」没有支持线程池,在线程池之后,性能逐步下降;
「腾讯云-独享」在32线程之前性能不高,随着线程增加性能逐步上升,并保持稳定(慢热);
「自建MySQL/Percona」在4个线程之前,性能比各云厂商的性能好(除AWS和华为云-独享);在8个线程之后低于各云厂商(腾讯云-独享除外),32个线程的时候,「自建MySQL」开始低于「腾讯云-独享」,「腾讯云-独享」和「自建-Percona」相近。
从QPS和TPS的平均值之和,性能从高到低依次排序为:「华为云-独享」「阿里云-通用」「华为云-通用」「腾讯云-通用」「阿里云-独享」「自建-Percona」「AWS」「自建-MySQL」「腾讯云-独享」
4.3.3只写场景
QPS:
TPS:
只写场景结论:
阿里云的通用型比独享型性能高26%;腾讯云的通用型比独享型性能高39%;华为云的通用型比独享型性能高78%。自建的PerconaServer比社区版的MySQL性能高7%;
「自建-MySQL」没有支持线程池,在线程池之后,性能逐步下降;
「腾讯云-独享」在32线程之前性能不高,随着线程增加性能逐步上升,并保持稳定(慢热);
「自建MySQL/Percona」在8个线程之前,性能比各云厂商的性能好(除AWS外);在8个线程之后低于各云厂商,「华为云-独享」和「自建MySQL」相近。
从QPS和TPS的平均值之和,性能从高到低依次排序为:「华为云-通用」「阿里云-通用」「腾讯云-通用」「阿里云-独享」「AWS」「腾讯云-独享」「自建-Percona」「自建-MySQL」「华为云-独享」
4.4补充说明
「腾讯云-独享」分数低是因为在线程数少的时候,性能不高(比自建实例低),即使在后续线程的时候表现不错,但是在整体上取得的分数不高。
线程池在大量短连接或者高并发情况下,有比较好的表现,没有支持线程池的「自建MySQL」和「AWS」在连接数大于的时候性能下降明显。
「自建MySQL/Percona」在2~4个线程的压力下,整体性能比RDS要好,如果实例压力很小,可以使用自建的方式部署,不然用云数据库是首选。
AWS连接线程数最高(超过报错),另外还需要额外购买IOPS,本文压测的时候IOPS没有买到最大值,gp2和io1的区别可以看官方文档说明。
「阿里云-独享」连接线程数最高为,因为超过了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.总结
通过测试详情的说明,得出本文开头部分的「测试结果」,希望通过本文,对大家在选择云厂商RDSMySQL产品时有帮助。
最后,通过「云厂商RDSMySQL怎么选」和本文的说明,可以看到「云RDSMySQL」无论在产品周边的运维能力还是性能上都明显优于「自建MySQL实例」,并且在高并发的压力下尤为突出。所以在业务允许的情况下,上云是一个非常不错的选择。
来源: