悲观锁和乐观锁_带你了解MySQL中的乐观锁与悲观锁

在并发控制编程中是一个非常重要的概念,锁对于数据和业务一致性的保证起到关键作用,锁可以是程序层面的,也可以是数据库层面的,今天本文就通过MySQL来说明悲观锁乐观锁两种常见的锁机制。

7d5031991ac0bc7920464f855995d336.png

悲观锁

悲观锁(Pessimistic Lock)的特点是先获取锁,在进行数据操作,最后释放锁。即先锁后查再更新,使用悲观锁的“悲观”的认为是这种获取锁的的可能是非常小的,因而需要确保获取到锁后再进行操作。这种操作在MySQL中的典型例子就是“select * from goods where id=5 for update”。但是在这种操作下,需要考虑以下情况。

80c568b6307a73265c47d7fd402f947f.png

使用for update“”的时候要注意此语句必须要放到事务中执行,等待事务提交或者回滚后才会释放锁,锁住的行才能允许被其他事务访问。

在for update的时候,被扫描的行都会被锁住,所以需要尽可能的保证扫描的行少,一般都是锁在索引列上面,否则最坏的情况可能导致全表被锁,影响其他业务

乐观锁

乐观锁(Optimistic Lock)的特点先进行业务操作,不到万不得已不去拿锁。即“乐观”的认为拿锁多半是会成功的,因此在进行完业务操作需要实际更新数据的最后一步再去拿一下锁就好。

b288a152f57697a259343b677dc9a7d5.png

通过上述例子可以看到,乐观锁在原有数据没有改变的基础上(版本号没有发生改变)操作成功,改变了回滚进行重试或者其他操作。乐观锁一般需要通过正确的去维护一个版本号字段来进行并发控制。

cbf666e3471198f4924bf0f9ddcfa727.png

总结

取锁的失败率比较低的情况下乐观锁的开销是较小了,反而取锁失败过高导致事务回滚的开销就比较大。悲观锁在取锁概率较小和业务不是非常复杂的系统中用的还是比较普遍

23f7cac7acc791ef3699b0b822d7f09f.png

好啦,今天的内容就分享到这里,喜欢的话来个转发关注吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/551883.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络解释概念,2017年计算机三级网络技术基本概念与名词解释:计算机网络的基本概念...

计算机网络的基本概念112. 计算机网络:计算机网络是利用通信设备和线路将分布在不同地点、功能独立的多个计算机互连起来,通过功能完善的网络软件,实现网络中资源共享和信息传递的系统。计算机网络由资源子网和通信子网构成。113. 通信子网&a…

怎么打开网络访问 计算机共享,电脑只要打开共享提示“无法启用共享访问”如何解决...

电脑升级到雨林木风win7系统后发现一个问题,那就是无法启用共享访问了,每次打开都会弹出提示“无法启用共享访问 错误Ox80004005:未指定的错误”,即使重装系统也没办法解决。后面检查后发现是关闭了“Windows firewall”服务进程造…

用户信息填写web代码_Web前端常见问题汇总

1.get 和post的区别1.1数据传输大小:get 传输数据大小限制在1KB,post传输数据大小没有严格限制1.2缓存和安全:get请求某个url,数据追加到url中发送(http的header传送),即浏览器将各个表单字段元…

qq农场 html5,腾讯客服-QQ农场/牧场-QQ农场打不开该怎么解决?

QQ农场打不开该怎么解决?若在您的电脑网络环境没有问题的情况下,QQ农场无法打开,请您查看客服网站右上角的公告信息是否当天系统在升级维护中,若是系统升级维护中,可能会导致农场无法正常进入,界时请您更换…

php三级分销系统制作_微分销商城系统创建三级微商分销体系方法

微分销商城系统如何完善创建三级微商分销体系,微商城的建设成为现在商家的新选,如果成功经营,将会让商家获得大量收益。下面就让摩盒mohe详细说说。1、系统一键分销功能促使微商城提升销量分销商城系统的好坏,决定着微商城用户能否…

未来的科学计算机作文800字,未来的高科技学校作文800字

未来的高科技学校作文800字二十年以后,我们的学校也变成了高科技的学校。早晨我来到学校门口,发现学校没有大门。这是怎么回事?难道学校不怕有坏人吗?我心想。这时,我的身边突然出现了一个身上有许多按钮的机器人。它说…

jaccard相似度_如何计算两个字符串之间的文本相似度?

推荐阅读:面试BAT 却被小小字符串秒杀?这13道题帮你一举击败字符串算法题字节跳动秋招面经:后端开发工程师,已拿意向书前言平时的编码中,我们经常需要判断两个文本的相似性,不管是用来做文本纠错或者去重等…

java按钮陷下去_付费?广告?捐款?如何让开源软件活下去?

【CSDN编者按】作为一名使用开源软件的开发者,你是否曾思考过开源软件是如何盈利?如何运营下去的?本文作者从正反两面给出自己看到的案例和建议,思考让开源软件持续下去的方式,一起来看看吧。作者 | TJ VanToll译者 | …

教资计算机科学与技术教资,教资笔试查成绩啦!广师大未来教师们又前进一步...

原标题:教资笔试查成绩啦!广师大未来教师们又前进一步这里是今日起考生登录ntce.neea.edu.cn“中小学教师资格考试网”即可查询笔试成绩啦惊不惊喜 意不意外查成绩的人这么多可以看出考取教师资格证已然成为大学生中的“香饽饽”日前,茂名滨海…

控制台启动jar包关闭控制台怎么关java程序_Jpom一款简而轻的低侵入式Java运维、监控软件...

你为什么需要JpomSpringBoot、Jboot等框架开发的项目通常是以Jar的方式在后台运行的,如果只有一两个项目,管理起来不是太麻烦,但是当项目多了以后,管理起来就不是那么方便了,当项目出现问题时,能够通过Jpom…

台式计算机如何双屏显示,电脑怎么分屏?|台式电脑双显示器连接方法

电脑怎么分屏?|台式电脑双显示器连接方法阅读:497时间:2019-08-10 23:24:36随着人们对时间效率的看中,比如在看报表的同时看电影,工作娱乐两不误,如果你也想要这样的工作环境,我们可以给电脑…

解释型语言和编译型语言的区别_从泛型的使用情况看出你对语言的理解程度(2)...

上篇我们提到&#xff1a;Java中的泛型是不可变的&#xff0c;可以通过<? extends E>实现了泛型的协变&#xff0c;<? super E>实现泛型的逆变。从泛型的使用情况看出你对语言的理解程度&#xff08;1&#xff09;今天我们来讲讲泛型单例工厂&#xff0c;在之前的…

泸州职业技术学院计算机单招试题,2021年泸州职业技术学院单招英语考试模拟试题库...

2021年高职单招升学一对一咨询高职单招郭老师:15683905627(微信)单招考试考什么单招专业技能考试文化统考;文化统考科目包括语文、数学、英语、专业综合理论。单招考试形式&#xff1a;专业技能考试文化统考。专业技能考试形式和内容由各专业大类联考委确定。文化统考科目为语文…

sata接口测试软件,如何查看电脑是否支持USB 3.0?Hwinfo32检测SATA端口的方法

Hwinfo32检测SATA端口有很多效用&#xff0c;其中我们查看该SATA是否支持USB 3.0就是一个判断&#xff0c;更多的信息是为了了解SATA目前已经可使用的和在使用的端口情况&#xff0c;具体方法可以查看下文中的方法进行判断。Hwinfo32检测SATA端口的方法&#xff1a;1、直接下载…

mfc try catch 捕获并显示_你的异常捕获够优雅不?求你别只会try{...} catch{...}了

文章来源 | cnblogs.com/jurendage/p/11255197.html作者 | 巨人大哥软件开发过程中&#xff0c;不可避免的是需要处理各种异常&#xff0c;就我自己来说&#xff0c;至少有一半以上的时间都是在处理各种异常情况&#xff0c;所以代码中就会出现大量的try {...} catch {...} fin…

五年级计算机教材内容,五年级计算机教学计划

五年级计算机教学计划教育结构不断发生变革&#xff0c;现代教育和教学理论主张对教学计划的结构实行改革。下面是小编为您整理的关于五年级计算机教学计划的相关资料&#xff0c;欢迎阅读&#xff01;五年级计算机教学计划 范例1一、教材分析选用的教材是&#xff0c;浙江摄影…

linux添加用户命令_为Linux的cp和mv命令添加进度条

cp和mv可能是大家日常中使用最多的Linux命令之一。但是有一个突出的问题是这两个命令都不会有任何提示信息&#xff0c;这在操作大文件时候只能干等。可能大家对此已经习以为常&#xff0c;但是其实上也有解决解决方法&#xff0c;本文我们就介绍一个Gnu Coreutils(cp和mv的源代…

unsigned long long 溢出 乘_Java整数相加溢出怎么办?Java8一步搞定

问题在之前刷题的时候遇见一个问题&#xff0c;需要解决int相加后怎么判断是否溢出&#xff0c;如果溢出就返回Integer.MAX_VALUE解决方案JDK8已经帮我们实现了Math下&#xff0c;不得不说这个方法是在StackOverflow找到了的&#xff0c;确实比国内一些论坛好多了~加法public s…

setstate是同步还是异步_谈谈 IO模型:同步、异步、阻塞、非阻塞

同步/异步、阻塞/非阻塞 说的是一回事儿吗&#xff1f;同步/异步、阻塞/非阻塞 你能通俗易懂的讲清楚吗&#xff1f;Java 中的 BIO、NIO、AIO 你了解吗&#xff1f;Socket 编程你还会吗&#xff1f;Linux 操作系统的 IO 模型你能讲讲吗&#xff1f;01. 生活中的同步/异步、阻塞…

md5会重复吗_如何优雅地处理重复请求(并发请求)

点击上方“服务端思维”&#xff0c;选择“设为星标”回复”669“获取独家整理的精选资料集回复”加群“加入全国服务端高端社群「后端圈」利用唯一请求编号去重你可能会想到的是&#xff0c;只要请求有唯一的请求编号&#xff0c;那么就能借用Redis做这个去重——只要这个唯一…