# 乐观锁

> 在关系数据库管理系统里，乐观并发控制（又名“乐观锁”，Optimistic Concurrency Control，缩写“OCC”）是一种并发控制的方法。它假设多用户并发的事务在处理时不会彼此互相影响，各事务能够在不产生锁的情况下处理各自影响的那部分数据。在提交数据更新之前，每个事务会先检查在该事务读取数据后，有没有其他事务又修改了该数据。如果其他事务有更新的话，正在提交的事务会进行回滚。

- ID: m06275
- 分类: technical
- 领域: 软件工程

## 定义

假设不会发生冲突，只在提交数据时检查是否有人修改过。如果有，则重试。适用于读多写少的场景，效率高。脚手架作用： 先行动，后对齐。在信任度高的团队或低风险项目中，采用乐观锁：允许大家并行工作，只在最后合并时解决冲突。这比“申请锁-操作-释放锁”的官僚流程快得多。

## 机制

数据库并发控制：假设冲突少，读时不加锁，提交时检查数据版本/时间戳是否被他人改动，若被改则冲突重试。机制是：以"检测冲突+重试"替代"事前加锁"，在读多写少场景大幅降低阻塞，提升吞吐。

## 练习

1) 读取时记录版本号/时间戳；2) 提交时比对版本；3) 版本一致则提交，否则冲突重试或报错；4) 控制重试次数防活锁。

## 脚手架用法

先行动，后对齐。在信任度高的团队或低风险项目中，采用乐观锁：允许大家并行工作，只在最后合并时解决冲突。这比“申请锁-操作-释放锁”的官僚流程快得多。

[阅读网页](https://thinkingmodels.site/entries/detail/m06275)
