178 字
1 分钟
面试鸭-MySQL中如果发生死锁应该如何解决?

MySQL中如果发生死锁应该如何解决?#

有两种解决方式,一种是依靠自动检测,一种是手动解决。

  1. 自动检测:
    • InnoDB自带死锁检测,由参数innodb_deadlock_detect来控制是否开启,默认开启。效果是当检测到死锁发生时,存储引擎会自动回滚代价最小的事务来解决这个死锁。
    • 还有一个兜底机制,锁等待超时 innodb_lock_wait_timeout 时(默认50秒),会自动放弃并回滚,
  2. 手动解决:
    • 为了解决自动检测不够快的情况
    • 手动使用指令show engine innodb status找到阻塞的线程id,然后直接kill 线程id来杀掉这个线程。

问题#

面试鸭-MySQL中如果发生死锁应该如何解决?
http://www.shineacz.top/posts/面试鸭-mysql中如果发生死锁应该如何解决/
作者
shineAcZ
发布于
2026-03-16
许可协议
CC BY 4.0