MySQL 乐观锁

马谦马谦马谦 MySQL评论635字数 539阅读 1 分 47 秒阅读模式

一、乐观锁说明

乐观锁的使用原理是在数据表中添加一个版本字段,每次先查询当前的版本,在更新数据的时候判断版本是否和查询到的版本一致,一致就说明数据没有被修改,可以操作数据并把版本号+1;如果版本号不一致就说明数据已经被更改了,不进行操作。

相对悲观锁来说,乐观锁用得更广泛一点,但乐观锁的缺点是操作失败率高。假设同一时刻有 100 个线程读取了数据的版本为 1,只要其中一个成功更新了数据,那么剩下的 99 都会失败,失败率高达 (n-1)/n

二、使用方法

乐观锁有两种常用的版本控制方法。

第一种方法是在数据库中加入版本字段,每次操作后把版本+1 。

第二种方法同样也是插入新字段,只是插入的字段类型为时间戳,在更新数据时先判断时间戳是否一致。

两者原理一样,只是实现的方式不同。

三、示例

创建一个表:

开启两个终端,查询 id=1 的记录并记下版本号为 0

当要更新数据的时候根据带上版本号更新:

第二个终端再根据 0 的版本号更新数据就不会操作成功:

 

 

 

 
马谦马谦马谦
  • 本文由 马谦马谦马谦 发表于 2017 年 11 月 23 日 22:11:26
  • 转载请务必保留本文链接:https://www.dyxmq.cn/databases/mysql/mysql-leguansuo.html
linux环境下安装Mariadb Linux

linux 环境下安装 Mariadb

一、下载安装 mariadb 是属于 mysql 的一个分支,是其创始人在 mysql 被卖给 oracle 之后重新分出来的,maria 取自于他女儿的名字。 mariadb 完全兼容于 mysql,在很多新版本的 lin...
使用二进制包安装MySQL CentOS

使用二进制包安装 MySQL

二进制包安装 MySQL 的步骤和源码编译安装的步骤差不多,只是少了编译的流程,直接解压就能使用,相对方便很多。 一、安装步骤 创建用户和安装依赖项: # 创建用户 > useradd -s /sb...
MySQL中的unique和primary key MySQL

MySQL 中的 unique 和 primary key

primary key 用于标识主键,字段被设置为主键后该字段所有值不可重复且不能为 null,每个表仅可有一个主键。 unique 设置字段不可重复,但不包括 null 值,每张表可以有多个 unique 字段,n...
匿名

发表评论

匿名网友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:
确定

拖动滑块以完成验证