乐观锁(Optimistic Locking)
缩写:无
简述
假设冲突少:读时取版本号/时间戳,写时用条件更新校验版本;失败则重试或放弃。常在应用层实现,不长期持有 DB 锁。
使用场景
Web 表单更新、库存扣减(配合条件更新)、低冲突资源。
实践与应用
• UPDATE ... WHERE id=? AND version=?;影响行数 0 即冲突。
• 冲突策略:重读重试或提示用户。
• 与唯一约束等 DB 手段组合。
注意事项
• 高冲突场景重试风暴,应改悲观或队列化。
• 忘记更新 version 等于无保护。
对比与易混
| 乐观 | 悲观 | |
|---|---|---|
| 思路 | 提交时检测冲突 | 先锁再改 |
信号与度量
版本冲突率、重试次数。
关联术语
• 悲观锁:先锁再改的对照
• 版本号 / CAS:常见实现
• 冲突重试:失败路径