innodb_locks_unsafe_for_binlog和间隙锁机制

网友投稿 801 2022-05-30

innodb默认使用了next-gap算法,这种算法结合了index-row锁和gap锁。正因为这样的锁算法,innodb在可重复读这样的默认隔离级别上,可以避免幻象的产生。innodb_locks_unsafe_for_binlog最主要的作用就是控制innodb是否对gap加锁。

注意该参数如果是enable的,则是unsafe的,此时gap不会加锁;反之,如果disable掉该参数,则gap会加锁。当然对于一些和数据完整性相关的定义,如外键和唯一索引(含主键)需要对gap进行加锁,那么innodb_locks_unsafe_for_binlog的设置并不会影响gap是否加锁。

innodb_locks_unsafe_for_binlog和间隙锁机制

在5.1.15的时候,innodb引入了一个概念叫做“semi-consistent”,这样会在innodb_locks_unsafe_for_binlog的状态为ennable时在一定程度上提高update并发性。

这个参数影响innodb如何使用间隙锁进行索引扫描和搜索,这个参数在未来的版本将被移除。

一般来说,innodb使用一种名为下一个键锁定的算法,这个算法将索引行级锁和间隙锁相结合。innodb在执行行级锁定时,会通过在遇到的索引记录上加共享锁或者独占锁这种方式进行搜索和扫描索引,因此,行级锁实际上就是索引记录锁。此外,索引记录上的下一键锁也会影响索引记录之间的间隙。也就是说,下一键锁是一个索引记录锁加上在索引记录之前的间隙上的间隙锁。

MySQL

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Apache Tomcat远程代码执行漏洞预警(CVE-2020-9484)
下一篇:八十五、store数据,actionCreators 与 constants 的拆分和redux-immutable的使用
相关文章