欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

乐观锁

程序员文章站 2022-05-04 15:49:47
...

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

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

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应该是失败的,但是从数据层面来看,数据是完整的,这就是我理解的乐观锁的应用。

相关标签: 乐观锁 数据库