OneSQL :: 给你一个升级到MySQL 5.7的理由,多核事务并发能力提升显著!

这段时间利用宝存科技提供的PCIE-Flash测试卡做了较多的MySQL压力测试,深深觉得IO问题已经被彻底解决,除继续用硬件的Atomic Write功能降底写出IO时延外,已经没有多少提升空间了,12TB的单卡容量也已解决了空间的需求,接下来要做的就是拼命提升软件在多核上的并发表现了。源生的MySQL 5.6的并发事务写入性能其实并不怎么样,因此优化过的OneSQL 5.6极具优势,sysbench的事务模式测式结果如下:

mysql56_sysbench_oltp_benchmark

 

可以看到源生MySQL 5.6从256个并发开始就往下走了,而OneSQL 5.6(部份思路和MySQL 5.7的优化思路一致)则表现平稳。那么同样的测试场景在MySQL 5.7中表现如何呢?原本以为OneSQL会继续有这样明显的优势,而官方MySQL有可能从512或768个并发后开始下降。实际测试结果如下:

mysql57_sysbench_oltp_benchmark

如此明显的提升,应当来自于读事务的优化(事务遇到读写操作后才进入rw_trx_list列表),以及日志锁的优化(OneSQL 5.6也用类拟思路优化)。如果一个场景不足以说明问题,再来看看sysbench单行更新的压测结果,如下所示:

mysql57_sysbench_update_benchmark

OneSQL在高压力下依然更平滑,但优势不再那么明显,不过这些测试是在PCIE-Flash高速IO设备上的结果,如果换成较慢的共享存贮或云盘,OneSQL的领先优势依然十分明显。有一种场景则是MySQL(不管是5.6.x还是5.7.x)无法处理好的,当并发事务之间锁冲突比较严重(即互联网秒杀业务场景)时,会非常悲剧,相比之下OneSQL则极具优势,如果稍稍修改一下SQL,充分利用OneSQL热点队列的功能,则优势会更加明显。

mysql56_sysbench_hotrow_benchmark

这里单表并发100条更新也上不去,可能和MySQL不是真正的细粒度行锁有关,因为100条记录都位于同一个页面上,而使用了页面锁。不管如何,源生MySQL 5.7在多核事务并发方面提升非常明显,值得升级,节约机器资源,节省能源,使用绿色计算减少点雾霾!