mysql 间隙锁的死锁
RR隔离级别下,间隙锁会触发死锁,比如
事务A:
select * from table where id = 5 for update;
insert into table (id) values (5)
事务B同样
那么在并发执行的时候,由于间隙锁之间不互斥,假设 id为5不存在,那么事务A、事务B都拿到同样的gap锁, 在insert的时候互相等待对方的gap锁,导致死锁
Written on February 17, 2022
...
RR隔离级别下,间隙锁会触发死锁,比如
事务A:
select * from table where id = 5 for update;
insert into table (id) values (5)
事务B同样
那么在并发执行的时候,由于间隙锁之间不互斥,假设 id为5不存在,那么事务A、事务B都拿到同样的gap锁, 在insert的时候互相等待对方的gap锁,导致死锁