1 死锁的发现
左图那两辆车造成死锁了吗?不是!右图四辆车造成死锁了吗?是!
innodb 引擎的 mysql 数据库会主动探知死锁,并回滚某个一直苦苦等待的事务。
innodb 如何探知死锁:当两个事务在相互等待时,当一个等待的时间超过设置的某一阀值时,对其中的一个事务进行回滚,另一个事务就能继续执行。在 innodb 中,参数 innodb_lock_wait_timeout
来设置超时时间。
1.1 wait-for graph 原理
我们怎么知道上图中的四辆车是死锁呢?它们相互等待对方的