做不到的话,不过就是一死 。但是,赢了就能活下去,要是不战斗就赢不了。 收藏本站
登陆 / 注册 搜索

阅读:7.7K   回复: 3

科普贴——什么是悲观锁和乐观锁

[复制链接]
仗剑天涯论坛大牛 2018-2-17 16:57 |显示全部楼层

今生相逢便是缘分,何苦去怨恨,何苦去仇视。

主题破百 赞助会员 金点子奖
    旺财和小强生活在一个网上商城的系统中, 是一对儿线程好基友。

科普贴——什么是悲观锁和乐观锁 cyber-security-1915628_960_720.png

    星期一刚上班,旺财接到领导电话说,要把一个商品的库存减少20, 旺财不敢怠慢,赶快把库存取出来一看,哦,现在有1000个。

👎🪐🔪♑🐕‎    与此同时,小强也接到电话说要把同一商品的库存减少30, 他一看,哦,现在有1000个。

    旺财计算出最新的库存值980, 保存!

    小强也计算出最新的库存值970, 保存 !  

💪🧳🍏🅰🦕‏


    旺财的数据被小强覆盖了!

    领导一看,本来卖出了50个商品,现在库存只扣了30个,这样持续下去就天下大乱了。

🤳⛴🍍™🕊‎

    旺财和小强, 各打二十大板, 长长记性!

    小强说:“哥,要不我们还是想个办法吧,再这样下去要被打死的。”#363:

    旺财悲催地说: “这样, 以后我们每次访问库存之前,都要先加锁,加了锁,就禁止别人再进入访问,只能等待持有锁的人来释放。”
✌🗺🫖🆗🐖‏
    星期二, 领导让旺财再次把库存减少20 , 旺财这次万分小心,先把库存给锁住,然后慢慢修改。

    小强也接到了把库存减少的指令, 但是旺财哥已经把库存锁住了, 不能操作,小强只好去阻塞车间喝茶聊天,然后到就绪车间等待调度运行。

✌🚐🫖🈸🐮‏    好不容易等到可以再次执行了,小强一看,这库存怎么还锁着呢!? 只好再次去阻塞车间喝茶。

    领导一看, 小强你怎么回事, 老是喝茶聊天? !  还干不干活了?

    小强争辩说旺财哥一直锁着库存,我没法操作。🧒‌👓💳🤤✍

    领导不管这些, 把小强和旺财又打了二十大板。 #394:

    (备注: 这种加锁的方式就是悲观锁了,悲观锁正如其名,每次取读写数据时候总认为数据会被别人修改,所以将数据加锁,置于锁定状态, 不让别人再访问。缺点是如果持有锁的时间太长,其他用户需要等待很长时间。)

✍🏫🍖✡🐢‏

    旺财说: “兄弟,这一次哥对不住你啊,处理得慢了一些, 不过哥刚才挨打的时候想了一个好办法:乐观锁。”

    小强说:“拉倒吧你,屁股都快被打烂了还乐观?”

    “你听我说嘛, 我们在那个库存字段的旁边,再加上一个版本(version)的字段, 例如刚开始的时候(库存= 1000, 版本=1), 每次你去读的时候不仅要读出库存,还要读出版本号, 等到你修改了库存,往回写的时候一定要检查一下版本号,看看和你读的时候是否一样。”

‌🧥🩸😚👏



    “如果不一样呢?”  小强问

    “那就放弃这次写的操作,重新读取库存和版本号, 重新来过。”

👃🍧‼🦮‌    “如果一样呢? ”

    “那就放心大胆地把新的库存值写回去。把版本号也加1”

    “我似乎有点明白了,我们试试,不过你要想好,我可不想再挨板子了。”
✋🔥🌶☣🐺‌
#f467:

    星期三, 旺财奉命把库存减去30, 他先读到了(库存= 1000, 版本=1);  小强也要改库存了,他要把库存减去50, 于是他也读到了(库存= 1000, 版本=1)。

    旺财计算出新的库存值970 ,写回成功,现在版本变成了(库存= 970, 版本=2)。
🤌🚂🥣🅰🦋‏
    小强也计算出新库存950 , 也准备写回,他战战兢兢地去看最新的版本号, 已经变成版本2了, 按照之前的约定,只好重新读取了。

    小强再次读取(库存= 970, 版本=2) , 计算出最新缓存值920(970减去50), 再次试图更新,没想到又被别人抢了先,现在版本号已经变成3了 ,最新的数据是(库存= 900, 版本= 3)。
🧑‍🎤‎👗🧬🥱👃
    唉, 只好重新来过, 计算出最新缓存值850(900减去50),第三次终于更新成功了, 最新的库存是 (库存=850, 版本= 4)

    领导看到旺财和小强忙得热火朝天,一刻不停,并且库存值也没有乱掉, 满意地点了点头:好同志啊。

    (备注: 这种方式就是所谓的乐观锁了,旺财和小强这次乐观了一点,觉得一般情况下不会有太多人修改库存,所以没有加锁,放心地去操作,只有在最后更新的时候才去看是否冲突。 这种方式适合于冲突不多的场景,如果冲突很多,数据争用激烈,会导致不断地尝试,反而降低了性能。)

🧑‍💻‎👓💰😪🙌



本文来自微信公众号:码农翻身
作者:刘欣
上一篇
下一篇
帖子热度 7751 ℃

仗剑天涯论坛大牛 2018-2-17 16:58 |显示全部楼层

今生相逢便是缘分,何苦去怨恨,何苦去仇视。

主题破百 赞助会员 金点子奖
由于生意太好,名气打响了,随之而来的是大客户大合同,某大客户一下要了800,刚好分配给了小强,每次清点完准备检查的时候,刚好发现版本号改了,于是又重新计算,数据量有点大,算完出来又慢了。本来小强说好下班就和女朋友去看电影,后来女票要说分手,小强一脸愣逼说:“我还没下班,宝贝,快了,电影票可以再买“{:13_521:}
降临1994 「出类拔萃」 2018-2-17 21:44 来自手机 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

看帖要回,回帖才健康,在踩踩,楼主辛苦了!
站在记忆的边缘 「出类拔萃」 2018-2-18 06:23 来自手机 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

湖南台新出了个综艺节目,好像是明星带着自己的孩子去体验生活,那个节目叫什么,突然想不起来了,求大神解答#y447:
您需要登录后才可以回帖 登录 | 免费注册  

本版积分规则

快速回复 返回列表