locks
锁与并发控制
行锁/表锁/意向锁、死锁与诊断,避免大范围锁与热点争用。
要点
- 锁粒度:表/行/页,意向锁的作用;
- 范围条件与间隙锁(部分引擎,如 InnoDB);
- 死锁:检测/回滚策略与常见诱因;
- 读写冲突的削峰与拆批。
通过执行计划推断加锁
- 范围条件使用索引时,锁范围受索引记录与间隙影响;全表扫描会锁更多记录;
- 使用
EXPLAIN
确认是否命中合适索引,减少不必要的范围锁。
乐观 vs 悲观
- 乐观锁:版本号列
version
,更新时WHERE id = ? AND version = ?
;冲 突时重试; - 悲观锁:
SELECT ... FOR UPDATE
明确加锁,冲突等待/超时;高并发下易扩大锁竞争。