乐观锁悲观锁

这两种锁用来控制并发,不仅仅是用在数据库中。但是数据库中比较常见,我们用数据库来理解。

悲观锁:

假设冲突一定会发生,所以在操作的一开始就对数据加锁。 比如 oracle 中select for update。 加上锁以后,别人无法再对该资源进行更改(可读不可写)。

乐观锁

假设冲突不一定会发生,所以只要在准备更改的时候才对数据加锁。流程如下:

1. 读取数据
2. 业务处理
3. 更新数据并写回数据库
    3.1 发现DB中的数据跟自己读的时候不一样了,知道有冲突
    3.2 发现DB中的数据没有变,加锁更新

posted on 2016-11-11 14:37  kramer  阅读(177)  评论(0编辑  收藏  举报

导航