在此,参考《故障分析 | 从 Insert 并发死锁分析 Insert 加锁源码逻辑》的经验,对死锁过程进行大胆猜想: T1 时刻 trx-2 执行了 UPDATE,在处理行时,在 row_search_mvcc 并会创建一个锁(以指示锁等待); T3 时刻 trx-2 继续执行 UPDATE 操作。 从而导致 trx-2 第二次获取锁时,被堵塞。 死锁发生! 以上仅根据经验进行的猜想,真正的原因还需要进一步分析和验证。有兴趣的读者结合如下几个问题,进一步研究。 以上各步骤获取锁的位置,是否正确?