美文网首页
MySQL白菜教程(Level 10 - 临键锁&插入意向锁)

MySQL白菜教程(Level 10 - 临键锁&插入意向锁)

作者: 七喜丶 | 来源:发表于2021-08-26 09:34 被阅读0次

临键锁(Next-Key Locks)
官方原文

A next-key lock is a combination of a record lock on the index record and a gap lock on the gap before the index record.

这个锁本质是记录锁加上 gap 锁,数据库可重复读事务隔离级别默认存在

举例
表 A idx(pid)


在 RC 事务隔离级别中

在RR事务隔离级别中

插入意向锁(Insert Intention Locks)
官方原文

An insert intention lock is a type of gap lock set by INSERT operations prior to row insertion. This lock signals the intent to insert in such a way that multiple transactions inserting into the same index gap need not wait for each other if they are not inserting at the same position within the gap. Suppose that there are index records with values of 4 and 7. Separate transactions that attempt to insert values of 5 and 6, respectively, each lock the gap between 4 and 7 with insert intention locks prior to obtaining the exclusive lock on the inserted row, but do not block each other because the rows are nonconflicting.

插入意向锁是间隙锁的一种,专门针对 insert 操作,官方意思是说多个事务在同一个索引同一个范围区间插入记录时候,如果插入位置不冲突,不会彼此阻塞

隔离级别还是 RR
表 A idx(pid)


-- transaction1 在 id 10 和 20 范围之间插入一条记录 --
insert into A values(11, '王老七'); 
-- transaction2 在 id 10 和 20 范围之间插入一条记录 --
insert into A values(12, '李四');

使用插入意向锁,二者都可以插入成功,针对插入并发时候提高效率

相关文章

网友评论

      本文标题:MySQL白菜教程(Level 10 - 临键锁&插入意向锁)

      本文链接:https://www.haomeiwen.com/subject/uovyiltx.html