Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1743803
  • 博文数量: 107
  • 博客积分: 1715
  • 博客等级: 上尉
  • 技术积分: 3168
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-18 18:42
个人简介

阿里巴巴DBA,原去哪儿网DBA。专注于MySQL源码研究、DBA运维、CGroup虚拟化及Linux Kernel源码研究等。 github:https://github.com/HengWang/ Email:king_wangheng@163.com 微博 :@王恒-Henry QQ :506437736

文章分类

全部博文(107)

文章存档

2014年(2)

2013年(38)

2012年(67)

分类: Mysql/postgreSQL

2013-10-21 23:14:19

紧随《MySQL学习分享 --机型选择和配置》,虽然没有什么太多的反应和关注,但前进的步伐没有停止。小插曲:电脑被儿子摔坏了,突然感觉失去了方向。忍不住到网吧来看技术文章,似乎有些格格不入,粗鲁嘈杂的声音,并没有影响我的专注和文章质量。

3、 《 MySQL Performance: The Road to 500K QPS with MySQL 5.7

MySQL 5.7 的性能达到另外 50W QPS,看到这样的标题,我惊呆了。虽然是一遍测试文章,细细读来,还是有许多知识可以挖掘。

文中指出, MySQL 5.6RO只读系统下,有很大的提高,而5.7不仅在RO只读系统中,提升较大,对RW读写场景,也有较大的性能提升。 Innodb性能影响主要有MDL trx_syslock_sys 三个,其中 MDL在单表查询时,是主要的瓶颈,单表查询需要对元数据加锁保护,这个毋庸置疑;多表查询时,每个表有 MDL进行保护,更大的瓶颈会落在 trx_syslock_sys 上。一个重要的信息是:当 CPU16 HT 32时,性能反而下降。从以上思路可知,更多的线程处理,反而造成锁冲突和等待。

MySQL 5.7 改进一:自动检测只读事务。对于只读事务来说,如果可以自动检测出来,可以减少 MDL锁开销。同时,文中也提到, percona团队通过改进trx_list锁的方式,提高只读事务的性能。从测试结果可知, MySQL 5.7的自动检测事务的方式,大大地降低了trx_sys锁和lock_sys锁,性能也有明显提升。而 Percona 5.5的优化方案在线程连接数较大时,锁竞争明显,性能也有所下降。此外,在接下来的测试中,发现随着CPU core的增加,性能明显升高,trx_sys锁也明显减少。

MySQL 5.7改进二:基于5.6版本,重写了trx_sys相关的代码。基于RW读写场景下,对RO场景性能影响的动机,重写trx_sys代码,降低事务锁的竞争。从测试场景看,随着CPU core的增加,QPS性能不断增长,最终使得CPU成为性能的瓶颈。

CPU成为瓶颈的条件下,通过努力降低sysbench等工具的CPU资源,继续提高MySQL的性能,最终达到了50WQPS

个人观点:尽管测试场景简单,测试条件单一(Point-Selects),实际应用场景远远复杂的多,但是从MySQL 5.7表现出来的性能来看,非常值得期待。并且MySQL 5.7trx_sys的重写,对RW读写场景也有较大的性能优化,但是仍然需要严格详细的测试。此外,在Innodb年会淘宝交流日中,与Innodb团队交流时,Sunny也表示,MySQL 5.7的改进和优化较大。总之,希望MySQL 5.7不要想5.6那样,让大家一直观望,而是不断推动用户使用。

参考资料

1、《MySQL Performance: The Road to 500K QPS with MySQL 5.7》:http://dimitrik.free.fr/blog/archives/2013/10/mysql-performance-the-road-to-500k-qps-with-mysql-57.html




阅读(13801) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~