mysql5.6对kernel_mutex的优化

参考自:http://blogs.innodb.com/wp/2011/04/mysql-5-6-innodb-scalability-fix-kernel-mutex-removed/


在mysql5.5以及之前的版本,kernel_mutex一直是性能的大杀器,在innodb层,被广泛的使用。全局锁是大招,杀死一大片的。之前percona将buffer pool mutex进行了拆分,性能得到了很大的提高。

幸运的是,mysql官方已经意识到了这个问题,在5.6里已经把kernel_mutex给干掉了;
不幸的是,离用上生产环境还遥遥无期。


kernel_mutex主要用于保护innodb子系统,主要包括如下几个模块:

1.锁管理
2.事务系统
3.MVCC
当上述子模块的状态发生变化时,都需要持有该锁。


在5.6里根据模块对kernel_mutex进行了拆分,主要分成了以下几个锁:
trx_sys_t::lock (rw_lock)
读写锁,用来保护全局事务链表,该链表在创建read_view或执行类似‘show engine innodb status’这样的命令时会被用到。
当开启事务或结束事务(commit/rollback)时会修改链表

trx_t::mutex
当事务的状态等发生变化时,需要持有该锁(mutex_own(&t->mutex))

lock_sys_t::mutex 和 lock_sys_t::wait_mutex
用于保护全局锁数据结构

通过这种拆分可以提高innodb的并发能力。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值