id为主键,a加了个唯一性索引
session1 | session2 |
---|---|
delete from table where a=2; | |
delete from table where a=2; | |
insert into table values(10,2); | |
deadlock |
解释:session1删除该条记录时,会加条记录锁,当session2再进行删除同一条记录时,便会阻塞,等待获取记录锁,然后session1在插入数据时,因为a设置为唯一性索引,所以在插入时会设置为next-key,因为等待队列里已经有session2在等待记录锁,所以session1的next-key 加上去,就会有循环等待的状态。
原文链接:https://github.com/aneasystone/mysql-deadlocks/blob/master/4.md