首页/数据/数据库速查/死锁日志解读(LATEST DETECTED DEADLOCK)
本包目录(495 条)
MySQL 基础与连接36 条SQL 语法52 条用户与权限21 条备份与恢复56 条主从复制与高可用53 条
性能与调优57 条
Redis 命令96 条Redis 运维与场景124 条

死锁日志解读(LATEST DETECTED DEADLOCK)

死锁是两个事务互相持有并等待:INNODB STATUS 的 LATEST DETECTED DEADLOCK 段给出两个事务的语句、持有锁与等待锁,按「改加锁顺序/缩短事务」治理。

数据库速查数据更新于 2026-10-12

查看死锁段

查看死锁段
SHOW ENGINE INNODB STATUS\G
-- 关注 LATEST DETECTED DEADLOCK
-- (1) TRANSACTION: 语句 A, 等锁记录 X
-- (2) TRANSACTION: 语句 B, 持有 X,等 A 的锁
-- WE ROLL BACK TRANSACTION (1)
读法两个事务各一行 HELD/WAITING 锁记录
结论最后一行说明回滚了谁
治理统一加锁顺序、拆小事务、用唯一键定位
死锁不是错误而是并发机制:InnoDB 自动选代价小的事务回滚,应用侧要能处理 1213 错误重试。

易错点

  • 把死锁当 bug 只改一个事务:加锁顺序不统一,隔壁组合又死锁
  • 死锁日志被业务日志淹没:关键段要落监控,不然复盘无据

数据来源与参考

  • MySQL 8.0 Reference Manual: Deadlock Detection

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌