失望锁和达观锁的运用 A8站源码交易平台

  • 时间:2019-08-09 11:50 编辑:A8站 来源:A8站 阅读:294
  • 扫一扫,手机访问
摘要:达观锁(Optimistic Lock), 望文生义,便是很达观,每次去拿数据的时分都以为他人不会修正,所以不会上锁,期间该数据能够随意被其他人读取,但是在更新的时分会判别一下在此期间他人有没有去更新这个数据,能够运用版本号等机制。 版本号机制是达观锁最常用的方法,便是在表中添加一个版本号的字段,更新前先查一遍获取版本号,再作为更新句子的where条件进行更新,假如数据在获取版本号之后,在更新之前现已改变了,那就会更新失利,由于最终更新了0条数据,java后台拿到更新数假如为0,则阐明更新失利,呈现了并发问题,然后做详细的处理。

A8站源码交易平台

1、失望锁(Pessimistic Lock), 望文生义,便是很失望,每次去拿数据的时分都以为他人会修正,所以每次在拿数据的时分都会上锁,这样他人想拿这个数据就会block直到它拿到锁。传统的联系型数据库里面就用到了许多这种锁机制,比方行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。

最常用的便是 select … for update,它是一种行锁,会把select出来的成果行锁住,在本业务提交或者回滚之前,不允许其他业务对这些行做update、delete、for update操作。

2、达观锁(Optimistic Lock), 望文生义,便是很达观,每次去拿数据的时分都以为他人不会修正,所以不会上锁,期间该数据能够随意被其他人读取,但是在更新的时分会判别一下在此期间他人有没有去更新这个数据,能够运用版本号等机制。
版本号机制是达观锁最常用的方法,便是在表中添加一个版本号的字段,更新前先查一遍获取版本号,再作为更新句子的where条件进行更新,假如数据在获取版本号之后,在更新之前现已改变了,那就会更新失利,由于最终更新了0条数据,java后台拿到更新数假如为0,则阐明更新失利,呈现了并发问题,然后做详细的处理。
例如有两个人一起对某条数据做修正,进程如下:
操作员A操作如下:
select id, balance, version from table where id=“1”;
查询成果:id=1, balance=1000, version=1

update table set balance=balance+100, version=version+1 where id=“1” and version=1;
履行后,回来的更新成果是1,阐明更新了一条,数据库里的成果是:id=1, balance=1100, version=2

A8站源码交易平台  操作员B操作如下:

select id, balance, version from table where id=“1”;
查询成果:id=1, balance=1000, version=1, 阐明操作员A还没修正。

update table set balance=balance-50, version=version+1 where id=“1” and version=1 ;
查的时分,操作员A还没修正,当要更新时,操作员A现已先修正成功,所以数据库里实践值是id=1, balance=1100, version=2,
操作员B也将版本号加一(version=2)企图向数据库提交数据(balance=950),但此刻查不到where id=“1” and version=1 的数据,
所以update就失利了,履行成果是0,阐明没有对任何数据更新成功。

现在再去查一下,成果仍是操作员A操作完结之后的成果
select id, balance, version from table where id=“1”;
查询成果:id=1, balance=1100, version=2

以上是自己完成版本号机制的原理,真实运用的版本号机制是数据库自身带有的机制,一旦发现更新的版本号不是最新的就会被驳回。
--------------------- 
版权声明:本文为 A8站源码交易平台  原创


  • 全部评论(0)
最新发布的资讯信息
【A8站-免费源码分享|直播源码】直播系统源码开发:关于安卓开发工具和obs直播推流(2020-10-30 09:41)
【计算机/互联网|】【独家修复】用户定制版短视频点赞系统,支持抖音+快手+刷宝+微视等所有主流短视频评论系统源码(2020-10-26 16:34)
【技术宅-为技术而疯|网站架设教程】【独家首发】最新更新已对接短信2020全新抖音快手点赞任务系统霸屏天下小红书头条威客兼职完整搭建架设视频教程(2020-10-25 13:56)
【技术宅-为技术而疯|网站架设教程】最新可用个人发卡网系统源码完整搭建架设视频教程(2020-10-25 10:53)
【技术宅-为技术而疯|网站架设教程】独家更新全新V10抢单系统唯品会京东淘宝自动抢单区块系统源码全开源抢单收单接单返利+搭建架设完整视频教程(2020-10-25 10:52)
【计算机/互联网|】柔丫纸尿裤云仓系统源码部署(2020-10-15 18:13)
【计算机/互联网|】侏罗纪软件模式定制开发(2020-10-14 15:33)
【计算机/互联网|】S2b2C供应商系统 营销闭环(2020-10-10 17:46)
【计算机/互联网|程序设计开发】盛都汇系统奖励机制(2020-10-10 17:20)
【A8站-免费源码分享|网站源码】积分商城系统APP开发(2020-09-23 14:56)
联系我们
Q Q:3101359898 点击直接对话
电话:18580901894
邮箱:admin#a8zhan.com
时间:09:00 - 24:00
手机二维码 访问手机版
返回顶部