http://dimitrik.free.fr/blog/archives/2015/10/mysql-performance-yes-we-can-do-more-than-16m-qps-sql-on-mysql-57-ga.html


关于mysql5.7的160万qps_第1张图片


看到上面这个图后,我终于知道网上流传mysql5.7比mysql5.6快3倍的依据了,它的测试硬件如下:

 Intel(R) Xeon(R) CPU E7-8890 v3 (codename Haswell-EX)
 4 CPU sockets x 18 cores-HT (144 CPU threads)
 2.5 Ghz, 512GB RAM
 Linux kernel 3.16


测试工具是sysbench,每个表100万记录,共8个表,采用非事务模式测试(纯select)。

测试结果是在1000并发下,qps还比较淡定,高达160万。


每一代mysql大版本,其最高qps匹配的是当年那个水平的顶级硬件能力,老外说:“

MySQL 5.7 is showing a near perfect scalability up to 72cores-HT on        4CPU sockets”,但是对于mysql5.6,从下图可以看出,cpu core从36提升到72,其最高qps没啥变化,只是并发能力提高了而已。

关于mysql5.7的160万qps_第2张图片


所以,在一般的硬件条件下,即使是纯select,想测试出5.7比5.6快3倍的效果,嘿嘿。

本人在一台esxi虚拟机上测试5.6和5.7的非事务select,采用的是单表1000万,测试命令如下:

#sysbench --mysql-db=db_test \
--mysql-port=3306 --db-driver=mysql --mysql-user=root \
--mysql-password=123456 --test=oltp --oltp-table-size=10000000 \
--num-threads=100 --max-time=900 \
--oltp-test-mode=nontrx --oltp-nontrx-mode=select \
--max-requests=0 --percentile=95 run >> ./sysbench1.log


结论我就不说了,以免误导观众。我只能说:好马配好鞍,想体验5.7的能力,硬件一定要跟上。

对于任何新版本数据库,其实都有类似规律,即,在升级软件的同时,最好有硬件升级的预算。


ps:在一台物理服务器上,本人用mysql 5.7.13跑出的qps是29万多,测试环境如下:

mem:128G
cpu:4*6Cores 1.2GHz
OS:CentOS Linux release 7.0.1406 (Core)
Mysql:5.7.13-enterprise-commercial-advanced-log MySQL Enterprise Server - Advanced Edition (Commercial)