专栏名称: HULK一线技术杂谈
HULK是360的私有云平台,丰富的一线实战经验,为你带来最有料的技术分享
目录
相关文章推荐
九章算法  ·  Snowflake要裁员了吗? ·  4 天前  
九章算法  ·  狗家mgr的落幕 ·  4 天前  
算法爱好者  ·  宇宙第一罚单!俄罗斯对谷歌罚款 ... ·  4 天前  
九章算法  ·  最新!Dropbox裁员20%!补偿16周…… ·  5 天前  
算法爱好者  ·  在我机器上好好的(Ծ‸Ծ) ·  5 天前  
51好读  ›  专栏  ›  HULK一线技术杂谈

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

HULK一线技术杂谈  · 公众号  ·  · 2017-07-18 19:00

正文

女主宣言

前几天看了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版本之间的降幅(此结论为原文作者的观点)。这个结论是怎么来的呢?在此将翻译后的文章分享给大家,希望对大家有所帮助!

注:本文里的网址链接需要翻墙后访问。

PS:丰富的一线技术、多元化的表现形式,尽在“HULK一线技术杂谈”,点关注哦!

背景简介

在分享了将全内存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中,或许可以解决这个问题。


图表

对于update-index,QPS的最大降幅出现在5.6-5.7。

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

对于read-write.range100,QPS的最大降幅出现在5.6-5.7

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

对于read-only.range10,QPS的最大降幅出现在5.6-5.7.

对于read-only.range10000,QPS的最大降幅出现在5.6-5.7。

对于point-query,QPS的最大降幅出现在5.6-5.7。

对于insert,QPS下降的不明显。

 

总结

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


当然,本文的结论为作者的观点,如果小伙伴们有其他的意见,或者不同的测试结果,请直接跟原文作者交流,谢谢合作。


后续我们也会继续输出技术干货,请持续关注


扫描下方
二维码
了解更多内容

推荐文章
九章算法  ·  Snowflake要裁员了吗?
4 天前
九章算法  ·  狗家mgr的落幕
4 天前
九章算法  ·  最新!Dropbox裁员20%!补偿16周……
5 天前
算法爱好者  ·  在我机器上好好的(Ծ‸Ծ)
5 天前
肌肉男训练营  ·  最佳男性励志氮泵!
7 年前
人工智能头条  ·  深度学习在自然语言处理中的应用
7 年前
同道大叔  ·  水瓶座是个什么样的人?
7 年前