乐观锁
来源:互联网 发布:双肩背包淘宝 编辑:程序博客网 时间:2024/04/29 22:27
乐观锁一般是在数据库的记录中添加一个版本号的冗余字段。
此图可以辅助理解乐观锁的使用。本图来自曾经浏览的某篇文章,具体地址忘记了,因此没有标注来源,只能用文字说明下
版本号的具体工作逻辑如下
create table repertory{ id int, sum int , residue int, version int }
1、当更新之前我们都会把当前这条记录查询出来
select * from repertory where id=1;
2、加入我们查询出来的数据的version=1。这个时候我们把sum修改成100.
update repertory set sum=100 ,version=version+1 where version=#{version} and id=#{id}
这个时候ID应该是1 verson也应该是1,如果更新成功了,那么version会变成2。
场景当A和B 同时执行了1查询出来数据,之后执行2的时候,当A执行完毕,这个时候version已经变成了2,B在执行2的时候就会找不到对应的数据也就不会做到期望的更新了。这个时候A应该是成功的,B应该是失败的,但是从数据层面来看,数据是完整的,这就是我理解的乐观锁的应用。
阅读全文
0 0
- 乐观锁
- 乐观锁
- 乐观锁
- 乐观锁
- 乐观锁
- 乐观锁
- 乐观锁
- 乐观锁
- 乐观锁
- 乐观锁
- 乐观锁
- 乐观锁以及乐观锁的实现
- 乐观锁以及乐观锁的实现
- 乐观锁以及乐观锁的实现
- 乐观的人用乐观锁?
- 悲观锁乐观锁
- 乐观锁,悲观锁
- 悲观锁 乐观锁
- pwnable之tiny_easy
- Toast的工具类和自定义工具类
- Codeforces Round #422 (Div. 2) B. Crossword solving
- Presentation Error的问题
- 一个响应式数据库框架SQLBrite,完美解决数据库和UI的同步更新!
- 乐观锁
- android 使用sharedpreferences 保存对象
- 代理模式
- Spark根据key,按照一定条件对数据去重
- 游戏服务器内存管理笔记
- 淘宝浏览足迹功能实现(含代码)--cookie案例
- 缺少Python27_d.lib的解决方法
- Cannot resolve symbol AppCompatActivity
- RBAC传统权限管理模型