昨晚我正在床上睡得着着的,突然来了一条短信。 啥,线上MySQL死锁了,我赶紧登录线上系统,查看业务日志。 能清楚看到是这条insert语句发生了死锁。 MySQL如果检测到两个事务发生了死锁,会回滚其中一个事务,让另一个事务执行成功。很明显,我们这条insert语句被回滚了。 insert into user (id, name, age) values (6, '张三', 6); 但是我们怎么排查这个问题呢? 到底跟哪条SQL产生了死锁? 好在MySQL记录了最近一次的死锁日志,可以用命令行工具查看: show engine innodb status; 在死锁日志中,可以清楚地看到...