乐观锁
程序员文章站
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应该是失败的,但是从数据层面来看,数据是完整的,这就是我理解的乐观锁的应用。
上一篇: 详解JS原型和原型链(二)
下一篇: html5中output标签有什么用?