1.乐观锁:乐观地认为每次读数据别人都不会修改,所以不需要用数据库锁
//查出商店中id=1的商品的版本号
select version currentVersion from shop where id=1;
//把id=1的商品库存减1,并把版本号自增1
update shop set num = num - 1,version = version + 1 where id=1 and version = currentVersion;2.悲观锁:悲观地认为每次读数据别人都会修改,所以要用数据库锁
//0.开始事务
begin;
//1.查出商品库存
select num from shop where id=1 for update;
//2.将商品库存减1
update items set num = num - 1 where id = 1;
//3.提交事务
commit;
悲观锁用了select for update,在事务结束之前其他事务都不能改id=1的数据,
如果id用了索引则只锁行,没用索引则会锁表。3.数据经常改,使用悲观锁,能保证数据正确地按顺序被修改,此时用乐观锁则会发生很多修改失败的情况。数据不常改,使用乐观锁,因为要改的数据别人基本都不会改,所以不用使用数据库锁那么重,耗性能。

数据库乐观锁和悲观锁例子和分析相关推荐

  1. 数据库中的乐观锁与悲观锁详解

    目录 悲观锁 乐观锁 悲观锁实现方式 乐观锁实现方式 如何选择 悲观锁 当我们要对一个数据库中的一条数据进行修改的时候,为了避免同时被其他人修改,最好的办法就是直接对该数据进行加锁以防止并发. 这种借 ...

  2. 数据库中的乐观锁与悲观锁

    悲观锁 当我们要对一个数据库中的一条数据进行修改的时候,为了避免同时被其他人修改,最好的办法就是直接对该数据进行加锁以防止并发. 这种借助数据库锁机制在修改数据之前先锁定,再修改的方式被称之为悲观并发 ...

  3. 数据库-乐观锁和悲观锁

    写在前面: 锁根据其使用的方式可以划分为:乐观锁和悲观锁.乐观锁即乐观并发控制,悲观锁即悲观并发控制,他们是处理并发控制时主要采用的技术手段.其中,悲观锁正是数据库本身提供的锁机制实现的. 悲观锁: ...

  4. 数据库 并发更新之乐观锁和悲观锁

    文章目录 1. 问题引出 2. 数据库悲观锁解决并发更新 3. 数据库乐观锁解决并发更新 4. 乐观锁 CAS 的 ABA 问题 5. 拓展思考 5.1. 悲观锁和排他锁.乐观锁和 CAS 分别有什么 ...

  5. 【转】数据库的乐观锁和悲观锁

    [转]数据库的乐观锁和悲观锁 有时候为了得到最大的性能,一般数据库都有并发机制,不过带来的问题就是数据访问的冲突.为了解决这个问题,大多数数据库用的方法就是数据的锁定.所以说,悲观锁和乐观锁主要是用来 ...

  6. 数据库并发控制,选择乐观锁还是悲观锁?

    出处:http://www.cnblogs.com/chenlulouis/  今天,在这里,我们将讨论的是在实际生产过程中,对于并发控制你是选择乐观锁还是悲观锁.这两种锁各自的应用环境应该怎样选择? ...

  7. 程序员过关斩将--数据库的乐观锁和悲观锁并非真实的锁

    菜菜哥,告诉你一个消息 你有男票啦? 非也非也,我昨天出去偷偷面试,结果又挂了 哦,看来公司是真的不想让你走呀 面试官让我说一下乐观锁和悲观锁,我没回答上来,回来之后我查了,数据库没有这两种锁呀 了解 ...

  8. mysql乐观锁与事务_[数据库事务与锁]详解七: 深入理解乐观锁与悲观锁

    注明: 本文转载自http://www.hollischuang.com/archives/934 在数据库的锁机制中介绍过,数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库 ...

  9. 程序员过关斩将——数据库的乐观锁和悲观锁并非真实的锁

    作者 | 菜菜 责编 | 刘静 YY妹:菜菜哥,告诉你一个消息 菜菜:你有男票啦? YY妹:非也非也,我昨天出去偷偷面试,结果又挂了 菜菜:哦,看来公司是真的不想让你走呀 YY妹:面试官让我说一下乐观 ...

  10. oracle数据库字段的值加一_天天面试--数据库乐观锁和悲观锁

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

最新文章

  1. 架构周报:微信后台系统的演进之路
  2. ios did receive memory warning
  3. 本地在线安装mysql_本地安装MySql服务
  4. nand flash 原理简介
  5. vs2012中对于entity framework的使用
  6. [js开源组件开发]js文本框计数组件
  7. Linux离线安装rzsz
  8. 无人机动力测试台的应用-测试高转速下的无人机螺旋桨结冰和脱落
  9. 删除oracle安装目录,Oracle 卸载
  10. MessageDigest实现MD5加密算法
  11. Google谷歌关键词监控系统
  12. 淘宝店铺老店标识怎么显示 怎么淘宝老店标识申请
  13. 服务器蓝屏 查看系统日志文件,教你电脑查看系统蓝屏日志的具体方法
  14. UVALIVE 3713 Astronauts(2-SAT)
  15. 免流解密之SAOML二开
  16. 本文是关于前端开发基本流程的分享
  17. vue3+vite2多页面多路由 注意
  18. to_Date()用法
  19. Kafka启动失败异常-InconsistentClusterIdException
  20. display的常用属性

热门文章

  1. 大BERT —— RoBERTa
  2. 算法设计学习---递归
  3. python登录斗鱼_Python实现抓取斗鱼实时弹幕
  4. 互联网消费金融----互联网消费金融【刘洋*著】的总结
  5. 社保卡绑定支付宝,直接在支付宝上报销!
  6. 风控中产品设计与贷前/中/后的四大模块都有哪些内容
  7. 叮咚~您有一份GitHub2020年度报告待查收
  8. pip版本过低,更新到更高版本的一种方法
  9. 使用GeoServer(GeoWebCache插件)发布ArcGIS切片地图
  10. 大数乘法(C语言实现)