出处:http://chenzhou123520.iteye.com/blog/1863407

乐观锁介绍:

乐观锁( Optimistic Locking ) 相对悲观锁而言,乐观锁假设认为数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲突了,则让返回用户错误的信息,让用户决定如何去做。那么我们如何实现乐观锁呢,一般来说有以下2种方式:

1.使用数据版本(Version)记录机制实现,这是乐观锁最常用的一种实现方式。何谓数据版本?即为数据增加一个版本标识,一般是通过为数据库表增加一个数字类型的 “version” 字段来实现。当读取数据时,将version字段的值一同读出,数据每更新一次,对此version值加一。当我们提交更新的时候,判断数据库表对应记录的当前版本信息与第一次取出来的version值进行比对,如果数据库表当前版本号与第一次取出来的version值相等,则予以更新,否则认为是过期数据。用下面的一张图来说明:

如上图所示,如果更新操作顺序执行,则数据的版本(version)依次递增,不会产生冲突。但是如果发生有不同的业务操作对同一版本的数据进行修改,那么,先提交的操作(图中B)会把数据version更新为2,当A在B之后提交更新时发现数据的version已经被修改了,那么A的

mysql 乐观锁 version_乐观锁-version的使用相关推荐

  1. MySQL/InnoDB中,乐观锁、悲观锁、共享锁、排它锁、行锁、表锁、死锁概念的理解

    MySQL/InnoDB的加锁,一直是一个面试中常问的话题.例如,数据库如果有高并发请求,如何保证数据完整性?产生死锁问题如何排查并解决?我在工作过程中,也会经常用到,乐观锁,排它锁,等.于是今天就对 ...

  2. [精选]MySQL的各种锁(表锁,行锁,悲观锁,乐观锁,间隙锁,死锁)

    不少人在开发的时候,应该很少会注意到这些锁的问题,也很少会给程序加锁(除了库存这些对数量准确性要求极高的情况下),即使我们不会这些锁知识,我们的程序在一般情况下还是可以跑得好好的.因为数据库隐式帮我们 ...

  3. Mysql共享锁、排他锁、悲观锁、乐观锁及其使用场景

    一.相关名词 |--表级锁(锁定整个表) |--页级锁(锁定一页) |--行级锁(锁定一行) |--共享锁(S锁,MyISAM 叫做读锁) |--排他锁(X锁,MyISAM 叫做写锁) |--悲观锁( ...

  4. MySQL 乐观锁与悲观锁

    悲观锁 悲观锁(Pessimistic Lock),顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁. 悲观锁: ...

  5. mysql隔离级别与悲观锁、乐观锁

    2019独角兽企业重金招聘Python工程师标准>>> 1.什么是悲观锁,乐观锁 悲观锁大多数情况下依靠数据库的锁机制实现,以保证操作最大程度的独占性.但随之而来的就是数据库性能的大 ...

  6. mysql 乐观锁和悲观锁

    数据库中锁机制,为了保证数据一致性,使各种资源在并发时变得有序设计的规则. MySQL各存储引擎使用了三种类型(级别)的锁定机制:表级锁定,行级锁定和页级锁定. 而乐观锁和悲观锁是通过技术手段使用的技 ...

  7. mysql乐观和悲观锁实现_mysql实现乐观锁和悲观锁该怎么编写?

    乐观锁和悲观锁相信大家都是知道的,这是java中的基础知识,今天我们就来看看它们两者该如何使用代码实现吧. 乐观锁实现 1).表设计 表task,分别有三个字段id,value.version 2). ...

  8. MySQL乐观锁、共享锁、排他锁、行锁、表锁区别和使用方法

    数据库锁分类 锁模式分类 乐观锁.悲观锁 范围锁 行锁.表锁 算法锁 临间锁.间隙锁.记录锁 属性锁 共享锁(读锁).排他锁(写锁) 状态锁 意向共享锁.意向排他锁 一.乐观锁和悲观锁 1.乐观锁介绍 ...

  9. mysql共享锁使用方法_浅谈Mysql共享锁、排他锁、悲观锁、乐观锁及其使用场景...

    Mysql共享锁.排他锁.悲观锁.乐观锁及其使用场景 一.相关名词 |--表级锁(锁定整个表) |--页级锁(锁定一页) |--行级锁(锁定一行) |--共享锁(S锁,MyISAM 叫做读锁) |-- ...

最新文章

  1. python减少内存_如何降低 Python 的内存消耗量?
  2. go语言中的多语言文本
  3. ABAP中Conversion Routine示例
  4. [Baltic2009]Radio Transmission
  5. android 官方教程中文版
  6. ELF文件格式详解-请查收
  7. [蓝桥杯2018初赛]乘积尾零-数论
  8. 第1章 计算机系统漫游(深入理解计算机系统)
  9. P1616 疯狂的采药(python3实现)--80分
  10. delphi 控件安装
  11. revit建筑样板_BIM技术在历史保护建筑中的具体应用(艾三维BIM分享)
  12. Win7 下安装ubuntu14.04双系统
  13. Python学习笔记大总结(我把我所有python笔记做了总结和学习顺序,点击即可进入相关博客。希望可以便于你们阅读)
  14. web网页规划与设计:网站设计——简洁的旅游酒店公寓(5页) HTML+CSS+JavaScript
  15. ApacheCN 翻译/校对/笔记整理活动进度公告 2019.10.4
  16. Vue2 + ElementUI登录界面模板
  17. 帝国插件自动采集文章主动推送给搜索引擎自动安装目录
  18. 使用fastText实现文本分类-java版
  19. 图片实现水平垂直居中的方法
  20. informix-系统视图

热门文章

  1. 合理修改3389端口
  2. links下c语言中for的作用是,C语言开发注意事项
  3. 下面有关java类加载器牛客网_下面有关java classloader说法错误的是?
  4. linux 网络7层模型,Linux网络编程——OSI七层模型、TCP/IP模型
  5. PHP调用wsdl文件类型的接口代码分享
  6. 【PP操作手册】创建公司间交易采购订单
  7. 【重复制造精讲】2、主数据介绍
  8. User Exits,Customer Exits,BADI and BTE基本概念
  9. CDS – One Concept, Two Flavors
  10. ABAP中P类型介绍