Tamic
作者Tamic·2017-07-21 15:17
数据库架构师·某保险

低并发场景下Mysql性能测试--新版Mysql QPS 降幅剧增

字数 2156阅读 2889评论 0赞 4

转载自 HULK一线技术杂谈
彭宏恩(译)

前几天看了Mark Callaghan的《Sysbench for MySQL 5.0, 5.1, 5.5, 5.6, 5.7 and 8》(http://sep9.cn/cvxjwz),一篇关于mysql各版本在低并发场景下性能下降的压测报告,通过各类测试结果对比得出:最大的QPS降幅出现在5.6和5.7这两个版本之间,并且这个降幅通常会超过5.0和5.6版本之间的降幅(此结论为原文作者的观点)。这个结论是怎么来的呢?在此将翻译后的文章分享给大家,希望对大家有所帮助!
注:本文里的网址链接需要翻墙后访问。

背景简介

在分享了将全内存sysbench压测应用于MySQL 5.6, 5.7 和 8的结果之后,我又想探究一下老版本的情况。于是又测试得到了针对于MySQL 5.0, 5.1 及5.5 的结果,作为MySQL 5.6, 5.7 和 8结果的补充,这是基于低并发性能下降系列的又一成果。

1.MySQL 4.1 和 5.5版本在性能上表现的并不是非常好,因此跳过了这两个版本。
2.最大的QPS降幅出现在5.6和5.7这两个版本之间,并且这个降幅通常会超过5.0和5.6版本之间的降幅,到底发生了什么呢?具体原因可以参考Bug 86215(http://sep9.cn/ci0hix

配 置

在压测中,使用了upstream 5.0.96, 5.1.72, 5.5.51, 5.6.35, 5.7.17 和 8.0.1测试了MySQL。在8.0.1中,使用了latin1 charset和latin1_swedish_ci collation。本文主要分享的是基于i5 NUC的结果。

我曾在相同的服务器上编译并运行了MySQL 4.1.22,但是并没有分享其结果,主要原因是该结果表现的不是很好,这一点也验证了印象中的“4.1并不是一个很好的版本”的观点。4.0是一个很棒的版本,但是还没让它在拥有gcc 4.7或4.8的Ubuntu 16.04上运行,因为在启动不久后就会出现segfaults(段错误)。

在使用的sysbench中,包含了测试运行,并且对MySQL 5.6, 5.7 和 8 在(http://sep9.cn/pzrah5)里描述了每一个引擎中使用的对应的my.cnf文件。此次分享my.cnf文件是针对于i3 NUC,对于i5 NUC,InnoDB buffer pool 和 IO capacity选项可以通过使用这些变量来增加,以下这些是针对5.0、5.1、5.5的my.cnf文件。对于mysqld和sysbench clients,使用了相同的服务器,binlog 是enabled的,但sync-on-commit是disabled的。测试表为4张,每张表有1M数据,测试场景为1、2、4个线程压测,该数据库适合存放在InnoDB buffer pool中。

结 果

所有测试的QPS数据在(http://sep9.cn/f0kp1g )里记录,一些测试的图表在下面展示。

下表列出了每个测试中各个版本相对于MySQL 5.0的QPS。当值为0.53时(看MySQL 8列的update-index),那么MySQL 8的QPS是5.0的53%,相当于MySQL 5.0比MySQL 8要快2倍。如前面所述,5.6到5.7性能下降是非常大的,但幸运的是,5.7至8并没有重蹈覆辙。

这给了我们希望,开始,我曾认为随着功能的增加和代码路径的增长,会导致每个主要版本的性能的持续下降,但是现在看来,大部分问题都出现在了5.7中,或许可以解决这个问题。
QQ截图20170721145204.png

QQ截图20170721145204.png

图 表

对于update-index,QPS的最大降幅出现在5.6-5.7。
QQ截图20170721145245.png

QQ截图20170721145245.png

对于update-nonindex,QPS的最大降幅出现在5.6-5.7,同样的在5.1-5.5之间也有一个较大的降幅,但是这个在5.6版本中已经解决了。从性能的角度来看,5.5或许是一个糟糕的版本。
QQ截图20170721145604.png
QQ截图20170721145604.png

对于read-write.range100,QPS的最大降幅出现在5.6-5.7
QQ截图20170721145629.png
QQ截图20170721145629.png

对于read-write.range10000,QPS的最大降幅出现在5.6-5.7。
QQ截图20170721145654.png
QQ截图20170721145654.png

对于read-only.range10,QPS的最大降幅出现在5.6-5.7.
QQ截图20170721145715.png
QQ截图20170721145715.png

对于read-only.range10000,QPS的最大降幅出现在5.6-5.7。
微信截图_20170721145737.png
微信截图_20170721145737.png

对于point-query,QPS的最大降幅出现在5.6-5.7。
QQ截图20170721145800.png
QQ截图20170721145800.png

对于insert,QPS下降的不明显。
QQ截图20170721145820.png
QQ截图20170721145820.png

总 结

希望通过本文能够帮助大家了解,为什么说最大的QPS降幅出现在5.6和5.7这两个版本之间,并且了解mysql各个版本间低并发场景下性能下降的比例。

本文转自微信公众号:DBGeeK

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

4

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广