我在InnoDB中有关于删除操作的表锁定问题.我有一个表队列,例如一列和许多事务,可以将行插入此队列或删除它们.没有任何两个事务同时使用相同的行.因此,所有行锁必须是不同的.但有时当删除操作删除表中的大部分行时,InnoDB更喜欢使用表锁而不是行锁,这会导致死锁.
我无法准确地重现这个死锁,但我发现了锁定问题.即我有表队列:id值(1,3,4,5,6,7)
交易1:
insert into queue value(2);
Run Code Online (Sandbox Code Playgroud)
交易2:
delete from queue where id in (1,3,4,5,6,7); -- here the lock comes
Run Code Online (Sandbox Code Playgroud)