MySQL InnoDB 默认是如何对待死锁的?

InnoDB 默认是使用设置死锁时间来让死锁超时的策略,默认 innodb_lock_wait_timeout设置的时长是 50s。

innodb_lock_wait_timeout参数是用于控制事务在等待锁超时时的行为。

默认情况下,当一个事务在等待某个锁超过innodb_lock_wait_timeout设置的时间时,它会被自动回滚,以避免长时间的锁等待。这样可以防止死锁的持续存在,但不能真正解决死锁问题。

对于死锁的处理,InnoDB存储引擎会检测到死锁后,会选择一个事务作为死锁的牺牲者,将其回滚来解决死锁。这个选择牺牲者的过程是自动进行的,不受用户可配置的参数影响。

因此,在MySQL InnoDB中,默认的死锁处理策略是自动选择牺牲者事务,并进行回滚。innodb_lock_wait_timeout参数用于控制等待锁的超时时间,而不是直接控制死锁处理的行为。感谢你的指正,对于之前的回答给你带来的困惑,我表示歉意。