乐观锁

来源:互联网 发布:数据结构算法题怎么弄 编辑:程序博客网 时间:2024/04/29 19:15

乐观锁

大多数是基于数据版本(version)的记录机制实现的。何谓数据版本?即为数据增

加一个版本标识,在基于数据库表的版本解决方案中,一般是通过为数据库表添加一个

“version”字段来实现读取出数据时,将此版本号一同读出,之后更新时,对此版本号加 1。

此时,将提交数据的版本号与数据库表对应记录的当前版本号进行比对,如果提交的数据版

本号大于数据库表当前版本号,则予以更新,否则认为是过期数据。
=====================================================================
乐观锁实例:假设数据库中帐户信息表中有一个 version 字段,当前值为 1;而当前帐户余
额字段(balance)为$100。下面我们将用时序表的方式来为大家演示乐观锁的实现原理:

                   操作员 A                                                                                                              操作员 B
(1)、操作员 A 此时将用户信息读出(此时
version=1),并准备从其帐户余额中扣除$50
($100-$50)
                                                                                                              (2)、在操作员 A 操作的过程中,操作员 B 也读入此
                                                                                                                      用户信息(此时 version=1),并准备从其帐户余额
                                                                                                                      中扣除$20($100-$20)
(3)、操作员 A 完成了修改工作,将数据版
本号加 1(此时 version=2),连同帐户扣除
后余额(balance=$50),提交至数据库更
新,此时由于提交数据版本大于数据库记录
当前版本,数据被更新,数据库记录 version
更新为 2
                                                                                                             (4)、操作员 B 完成了操作,也将版本号加 1
                                                                                                                   ( version=2 ) 并 试 图 向 数 据 库 提 交 数 据
                                                                                                                   (balance=$80),但此时比对数据库记录版本时发
                                                                                                                    现,操作员 B 提交的数据版本号为 2,数据库记录
                                                                                                                    当前版本也为 2,不满足“提交版本必须大于记录
                                                                                                                    当前版本才能执行更新”的乐观锁策略,因此,操
                                                                                                                    作员 B 的提交被驳回

==============================================================================================


原创粉丝点击