WebMD
本页大纲

乐观锁(Optimistic Locking)

缩写:无

简述

假设冲突少:读时取版本号/时间戳,写时用条件更新校验版本;失败则重试或放弃。常在应用层实现,不长期持有 DB 锁。

使用场景

Web 表单更新、库存扣减(配合条件更新)、低冲突资源。

实践与应用

• UPDATE ... WHERE id=? AND version=?;影响行数 0 即冲突。
• 冲突策略:重读重试或提示用户。
• 与唯一约束等 DB 手段组合。

注意事项

• 高冲突场景重试风暴,应改悲观或队列化。
• 忘记更新 version 等于无保护。

对比与易混

乐观 悲观
思路 提交时检测冲突 先锁再改

信号与度量

版本冲突率、重试次数。

关联术语

• 悲观锁:先锁再改的对照
• 版本号 / CAS:常见实现
• 冲突重试:失败路径