程序员过关斩将——数据库的乐观锁和悲观锁并非真实的锁( 八 )
乐观锁
乐观锁认为一般情况下数据不会造成冲突 , 所以在数据进行提交更新时才会对数据的冲突与否进行检测 。 如果没有冲突那就OK;如果出现冲突了 , 则返回错误信息并让用户决定如何去做 。 类似于 SVN、GIt这些版本管理系统 , 当修改了某个文件需要提交的时候 , 它会检查文件的当前版本是否与服务器上的一致 , 如果一致那就可以直接提交 , 如果不一致 , 那就必须先更新服务器上的最新代码然后再提交(也就是先将这个文件的版本更新成和服务器一样的版本)
乐观锁是一种程序的设计思想 , 通过一个标识的对比来决定数据是否可以操作 , 现在普遍的做法是给数据加一个版本号或者时间戳的方式来实现乐观锁操作过程:
在表中设计一个版本字段 version , 第一次读的时候 , 会获取 version 字段的取值 。 然后对数据进行更新或删除操作时 , 会执行UPDATE ... SET version=version+1 WHERE version=version 。 此时如果已经有事务对这条数据进行了更改 , 修改就不会成功 。
推荐阅读
- 网游|颠覆你认知的网游土豪,程序员加班为他改游戏,还送专属服务器
- 网易|永劫无间诡异宕机事件:网易机房过热,程序员竟然祭出了干冰?
- 坦克大战|FC游戏埋藏了三十年的秘密,《坦克大战》隐藏着一封程序员的血书
- 梦幻西游|梦幻西游:程序员修复显示BUG用力过猛,现在武器亮的有点晃眼
- 塞尔达传说|Switch下载超200万,程序员才3人,这游戏真能比塞尔达还好玩?
- 神武4|《神武4》手游之宠物爆料:忠义仁勇神兽\牛云长\助你过关斩将
- 程序员|公司新招程序员,入职2天看了下电脑配置,2天后果断辞职
- 程序员|程序员内推10人进公司拿了10万内推费,年底领导:你转行做HR吧,结果愣了
- 程序员|程序员没转发公司内容被扣500,结果辞职半个月之后,领导懵了
- 红米手机|操作太骚!美国程序员把活外包给中国人,不用干活白拿140万工资