数据库乐观锁和悲观锁例子和分析
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. 乐观锁 CAS 的 ABA 问题 5. 拓展思考 5.1. 悲观锁和排他锁.乐观锁和 CAS 分别有什么 ...
- 【转】数据库的乐观锁和悲观锁
[转]数据库的乐观锁和悲观锁 有时候为了得到最大的性能,一般数据库都有并发机制,不过带来的问题就是数据访问的冲突.为了解决这个问题,大多数数据库用的方法就是数据的锁定.所以说,悲观锁和乐观锁主要是用来 ...
- 数据库并发控制,选择乐观锁还是悲观锁?
出处:http://www.cnblogs.com/chenlulouis/ 今天,在这里,我们将讨论的是在实际生产过程中,对于并发控制你是选择乐观锁还是悲观锁.这两种锁各自的应用环境应该怎样选择? ...
- 程序员过关斩将--数据库的乐观锁和悲观锁并非真实的锁
菜菜哥,告诉你一个消息 你有男票啦? 非也非也,我昨天出去偷偷面试,结果又挂了 哦,看来公司是真的不想让你走呀 面试官让我说一下乐观锁和悲观锁,我没回答上来,回来之后我查了,数据库没有这两种锁呀 了解 ...
- mysql乐观锁与事务_[数据库事务与锁]详解七: 深入理解乐观锁与悲观锁
注明: 本文转载自http://www.hollischuang.com/archives/934 在数据库的锁机制中介绍过,数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库 ...
- 程序员过关斩将——数据库的乐观锁和悲观锁并非真实的锁
作者 | 菜菜 责编 | 刘静 YY妹:菜菜哥,告诉你一个消息 菜菜:你有男票啦? YY妹:非也非也,我昨天出去偷偷面试,结果又挂了 菜菜:哦,看来公司是真的不想让你走呀 YY妹:面试官让我说一下乐观 ...
- oracle数据库字段的值加一_天天面试--数据库乐观锁和悲观锁
悲观锁 悲观锁(Pessimistic Lock),顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁.悲观锁:假 ...
最新文章
- 架构周报:微信后台系统的演进之路
- ios did receive memory warning
- 本地在线安装mysql_本地安装MySql服务
- nand flash 原理简介
- vs2012中对于entity framework的使用
- [js开源组件开发]js文本框计数组件
- Linux离线安装rzsz
- 无人机动力测试台的应用-测试高转速下的无人机螺旋桨结冰和脱落
- 删除oracle安装目录,Oracle 卸载
- MessageDigest实现MD5加密算法
- Google谷歌关键词监控系统
- 淘宝店铺老店标识怎么显示 怎么淘宝老店标识申请
- 服务器蓝屏 查看系统日志文件,教你电脑查看系统蓝屏日志的具体方法
- UVALIVE 3713 Astronauts(2-SAT)
- 免流解密之SAOML二开
- 本文是关于前端开发基本流程的分享
- vue3+vite2多页面多路由 注意
- to_Date()用法
- Kafka启动失败异常-InconsistentClusterIdException
- display的常用属性