悲观锁和乐观锁_带你了解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…

pict 手册_zbrush中文手册.pdf

zbrush中文手册欢迎学习和使用ZBrush1.55b使用ZBrush整合的强大绘画﹑雕塑和纹理工具, 再结合自身的想象力, 能以出乎想象的方式创造2D﹑2.5D﹑和3D艺术图像.在阅读本手册之前请注意下列事项:商标Pixologic的Pixologic图标、ZBrush 的ZBrush 图标版权由 © 1997 - 2002 Pix…

python threading类重写_python下threading模块使用的注意点

python下threading模块使用的注意点1. 线程执行代码的封装通过上一小节,能够看出,通过使用threading模块能完成多任务的程序开发,为了让每个线程的封装性更完美,所以使用threading模块时,往往会定义一个新的子类class&…

html和css如何制作小球,[网页设计]使用CSS3动画模拟实现小球自由落体效果

[网页设计]使用CSS3动画模拟实现小球自由落体效果0 2015-07-20 14:00:03使用纯CSS代码模拟实现小球自由落体效果:html代码如下:1 2   CSS样式代码:/*ball样式*/#ballDiv{ height:400px; background-color:#333333;}#ball{ width:100px; hei…

arduino 土壤温湿度传感器_【雕爷学编程】Arduino动手做(70)---土壤湿度传感器...

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动…

python关闭对象语法_Python基础及语法(七)

文件操作文件常用操作open:打开read:读取write:写入close:关闭readline:行读取readlines:多行读取seek:文件指针操作tell:指针位置打开操作open(file, moder, buffering-1, encoding…

route和bridge是什么意思_port link-mode bridge是什么意思

展开全部工作在二层模式。bridge 英[brɪdʒ] 美[brɪdʒ]n 桥; 起联系作用的事物e68a8462616964757a686964616f31333433656131; 桥梁; 纽带; (舰船的) 驾驶台; 船…

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

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

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

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

页表长度和页表大小_在请求调页系统中,若逻辑地址中的页号超过页表控制寄存器中的页表长度,则会引起( ) 。_学小易找答案...

【单选题】根据法律规定,适龄儿童和青少年都必须接受,国家、社会、家庭必须予以保证的 国民 教育是 ( )【单选题】给定如下前提:(P∧Q)→R, R∨S, S 其逻辑结论(有效结论)是( )【判断题】This warranty does not become void under any circumstance during the warranty perio…

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

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

python发展路线_Python进阶路径-从学徒到大师

慕盖茨9453107了解(更深入地)关于内存管理的Python数据类型及其作用正如社区中的一些人所知道的,我教授Python课程,其中最受欢迎的课程是综合性的Intro Intermediate课程以及介绍各种应用程序开发领域的“高级”课程。通常,我会被问到一个非…

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

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

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

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

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

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

ap接口 php_小白php API初体验 php api文档 php api接口开发 php web ap

这里的php 写API其实就是指提供一个WebServiceWebSite : 1.以html格式响应返回 2.由用户通过浏览器来接入WebService : 1.以json/Xml格式返回 2.由程序接入 3.用来实现不同平台的交互How to begin说简单点,就是传数据的,就是封装各种方法让其它人来调用A…

powerdesigner 导入html,使用PowerDesigner导出Word/HTML的一些配置

《JavaScript高级程序设计》学习笔记系统学习JS, 从入门,通过学习jQuery或者angularJS源码来进阶. 第1章 JavaScript简介 1.JS问世的目的是处理以前由服务器端 ...css link和@import区别用法这里link与import介绍的是html引入css的语法单词.两者均是引入css到html的…

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

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

clickhouse mysql引擎_ClickHouse为啥能做到变态快,超 MySQL 801倍?

原标题:ClickHouse为啥能做到变态快,超 MySQL 801倍?阿里、腾讯、字节跳动这种大厂每天数据规模达到千亿、万亿级别,中小企业手里要是没点儿数据,根本不好意思说自己是互联网公司。有数据是一回事,让数据发…

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

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