锁等待
General error: 1205 Lock wait timeout exceeded;
死锁
Serialization failure: 1213 Deadlock found when trying to get lock;
分析死锁的常用办法
查看故事现场
show engine innodb status
解决方案
- 使用手动事务块包裹
- 拆分大事务,并减少事务语句数量
- 加锁where条件字段要有索引,加锁where条件顺序要一致,让死锁变为锁等待
- innodb的行锁,锁的是查询条件中的索引字段,以及索引字段对应的primary key字段