死锁处理:
- 等待,直到超时(50S);
- 发起死锁检测,主动回滚一条小事务;
死锁预防:
- 尽量使用唯一索引,减小锁的粒度;
- 使用小事务;
- 操作完了立马提交事务;
- 不要锁表;
- 单一事务,尽量重复用一样的锁;
信息收集:
- 利用命令 SHOW ENGINE INNODB STATUS查看死锁原因。
- 调试阶段开启 innodb_print_all_deadlocks,收集所有死锁日志。
间隙锁不互斥,临键锁和行锁的S锁、X锁都会互斥,产生死锁;
间隙锁不互斥,临键锁和行锁的S锁、X锁都会互斥,产生死锁;