MySQL如何开启死锁检测?
在 MySQL 中,死锁检测默认是开启的(InnoDB 引擎),通过参数 innodb_deadlock_detect 控制。如需手动开启或确认状态,可按以下步骤操作:
1. 查看当前状态
SHOW VARIABLES LIKE 'innodb_deadlock_detect';
若结果为 ON 表示已开启,OFF 表示未开启。
2. 动态开启(无需重启)
SET GLOBAL innodb_deadlock_detect = ON;
3. 永久生效(修改配置文件)
在 my.cnf(Linux)或 my.ini(Windows)的 [mysqld] 部分添加:
innodb_deadlock_detect = ON
重启 MySQL 服务生效。
注意:
- 仅适用于 MySQL 5.7.15 及以上版本,旧版本无此参数,默认通过 innodb_lock_wait_timeout 处理锁超时(默认50秒)。
- 关闭死锁检测(设为 OFF)可能提升高并发场景性能,但需依赖超时机制解决死锁。