跳到主要内容

locks

锁与并发控制

行锁/表锁/意向锁、死锁与诊断,避免大范围锁与热点争用。

要点

  • 锁粒度:表/行/页,意向锁的作用;
  • 范围条件与间隙锁(部分引擎,如 InnoDB);
  • 死锁:检测/回滚策略与常见诱因;
  • 读写冲突的削峰与拆批。

通过执行计划推断加锁

  • 范围条件使用索引时,锁范围受索引记录与间隙影响;全表扫描会锁更多记录;
  • 使用 EXPLAIN 确认是否命中合适索引,减少不必要的范围锁。

乐观 vs 悲观

  • 乐观锁:版本号列 version,更新时 WHERE id = ? AND version = ?;冲突时重试;
  • 悲观锁:SELECT ... FOR UPDATE 明确加锁,冲突等待/超时;高并发下易扩大锁竞争。