死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁。
如何查看死锁?
使用命令show engine innodb status查看最近的一次死锁。
InnoDB Lock Monitor打开锁监控,每15s输出一次日志。使用完毕后建议关闭,否则会影响数据库性能。
对待死锁常见的两种策略:
通过innodblockwait_timeout来设置超时时间,一直等待直到超时;发起死锁检测,发现死锁之后,主动回滚死锁中的某一个事务,让其它事务继续执行。