178 字
1 分钟
面试鸭-MySQL中如果发生死锁应该如何解决?
MySQL中如果发生死锁应该如何解决?
有两种解决方式,一种是依靠自动检测,一种是手动解决。
- 自动检测:
- InnoDB自带死锁检测,由参数innodb_deadlock_detect来控制是否开启,默认开启。效果是当检测到死锁发生时,存储引擎会自动回滚代价最小的事务来解决这个死锁。
- 还有一个兜底机制,锁等待超时 innodb_lock_wait_timeout 时(默认50秒),会自动放弃并回滚,
- 手动解决:
- 为了解决自动检测不够快的情况
- 手动使用指令
show engine innodb status找到阻塞的线程id,然后直接kill 线程id来杀掉这个线程。
问题
面试鸭-MySQL中如果发生死锁应该如何解决?
http://www.shineacz.top/posts/面试鸭-mysql中如果发生死锁应该如何解决/