对于我的问题,我引用了https://dev.mysql.com/doc/refman/5.7/en/innodb-deadlock-example.html官方文档中的死锁示例。
我很好奇MySQL的设计者为什么选择不允许重入锁,即允许事务使用已经持有的锁来跳过队列。
在示例中,当它说Finally, client A also attempts to delete the row from the table:
时,为什么A不能跳过队列,因为它已经持有了锁并继续删除行?然后,客户端B运行其事务,没有找到与i=1
匹配的行并成功。这样无法避免死锁吗?