乐观锁

乐观锁一般是在数据库的记录中添加一个版本号的冗余字段。
此图可以辅助理解乐观锁的使用。本图来自曾经浏览的某篇文章,具体地址忘记了,因此没有标注来源,只能用文字说明下
这里写图片描述

版本号的具体工作逻辑如下

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值