当前位置:首页 > 黑客业务 > 正文内容

悲观锁(MySQL 乐观锁)

访客3年前 (2021-09-29)黑客业务623

悲观锁定是指对被外界修改的数据保持保守的态度,即在数据处理过程中锁定数据。这个功能需要依靠数据库提供的锁定机制,否则即使在系统中实现了锁定机制,也不能保证外部系统不会修改数据。

锁定模式

锁定模式。没有

无锁机构

锁定模式。阅读

Hibernate在读取记录时自动获取锁

即共享锁(s锁),也称为读锁。如果事务T获得了数据对象A上的共享锁(即把共享锁加到A上),那么其他事务只能获得A上的共享锁(S锁),而不能增加排他锁(X锁),直到A释放所有的共享锁。允许共享锁的事务只能读取数据,但不能修改数据。

锁定模式。写

Hibernate在插入更新记录时自动获取锁

也就是排他锁(x锁),排他锁也叫写锁。如果事务t获得了数据a的排他锁,那么t可以读写a,但是在t释放a的x锁之前,其他事务既不能获得a的共享锁,也不能获得a的排他锁。

锁定模式。升级

如果数据库系统支持悲观锁(如Oracle和MySQL),则执行select…for update语句(行级锁,其他事务不能更新,插入和删除语句),如果数据库不支持悲观锁(如Sybase),则执行普通select语句。

锁定模式。UPGRADE_NOWAIT

和锁定模式。升级具有相同的功能。此外,为Oracle数据库执行select…for update nowait语句。“nowait”意味着如果执行select语句的事务不能立即获得悲观锁,它将不会等待其他事务释放锁,而是立即抛出锁异常。

锁的演示

注意:Lock只对一个事务中操作的数据对象起作用,而不是对整个数据库起作用,而是锁定整个数据库。

打开两个SQL命令行操作界面,可以代表两个事务T1和T2。我们首先在两个接口上执行命令:启动事务;

在事务T1中,查询数据库中学号为“2015”的学生信息,并对操作数据添加悲观锁:从stu _ info中选择*进行更新,其中stu _ no =“2015”;。此时,我们可以查询相应的信息。

“for update”表示添加悲观锁。在这个查询之后,事务没有被提交,即锁没有被释放

在交易T2中,查询数据库中学号为“2016”的学生信息,并将悲观锁添加到操作数据中:从stu _ info中选择*进行更新,其中stu _ no =“2016”;。这时,我们也可以查询相应的信息。

交易尚未提交

在交易T2中,查询数据库中学号为“2015”的学生信息。这次做一个普通的不加锁的选择查询:从stu _ info中选择*其中stu _ no = " 2015。这时,我们也可以查询相应的信息。

交易尚未提交

在交易T2中,尝试查询数据库中学号为“2015”的学生信息,并在操作数据中添加悲观锁:从stu _ info中选择*进行更新,其中stu _ no =“2015”;。这时我们可以发现,相关信息并没有显示,而是在等待。当我们提交事务T1(即commit)时,数据对象“2015”在T1中释放悲观锁,T2事务可以查询相关信息,获得悲观锁。

如果我们改变第五步。在刚才的第五步中,我们在没有悲观锁的情况下修改了事务T1中学号为“2016”的学生信息,因为我们之前在事务T2中为该记录添加了悲观锁,并且该记录尚未发布,所以我们只能在T2提交后才能成功修改。

推荐教程:MySQL教程

扫描二维码推送至手机访问。

版权声明:本文由黑客接单发布,如需转载请注明出处。

本文链接:http://therlest.com/69244.html

分享给朋友:

“悲观锁(MySQL 乐观锁)” 的相关文章

华流芒种是几月几号农历

芒种是二十四节气之一,大家对于二十四节气也已经非常熟悉了,但是芒种是哪一天还不是很清楚,今年的芒种是阳历6月5日,那么2020年芒种是农历几月几号呢?接下来我们就一起了解一下吧。     2020年芒种是农历几月几号...

猪肉怎么选?颜色有区别吗?今天做饭的时候发现上次买的猪肉颜色跟这

猪肉怎么选?颜色有区别吗?今天做饭的时候发现上次买的猪肉颜色跟这 买猪肉时,根据肉的颜色、外观、气味等可以判断出肉的质量是好还是坏。优质的猪肉,脂肪白而硬,且带有香味。肉的外面往往有一层稍带干燥的膜,肉质紧密,富有弹性,手指压后凹陷处立即复原。 次鲜肉肉色较鲜肉暗,缺乏光泽,脂肪呈灰白色;表面带...

蜂胶多少钱一瓶是真的(蜂胶五毒膏多少钱一只)

之前听说这客户有糖尿病,蜂胶就是物稀价贵,变成日常可以食用的营养品。 我经常买的澳佳宝的120左右220粒。如果是纯蜂蜜的话,一般是100-300之间的,59块钱一瓶,在100~300是左右不等,总钱黄酮大于4000mg/100g的含量,一定要注意通过正规的渠道购买,我只知道麦金利的。 蜂胶软胶囊价...

存储过程oracle(oracle财务系统)

推荐教程:甲骨文教程 本文主要介绍甲骨文中的数据转换。 1.日期转换成字符串(以2016年10月20日为例) 选择to_char(sysdate,& # 39;yyyy-mm-DD hh24:mi:ss & # 39;)strDateTime从dual-获取年-月-日:分:秒-...

intense靶场-获取User权限

出品|MS08067实验室(www.ms08067.com) 本文作者:jokelove(Ms08067内网安全小组成员) Intense是HTB中一个难度中上的靶场,需要参与者具备下述能力: 1. Python源码审计 2. SQL注入原理 3. SNMP远程命令执行 4. 栈溢出...

天气冷注意保暖的句子 天气冷注意保暖的问候语

气温逐渐转冷,能够根据朋友圈说说的方式提示亲戚朋友注意保暖,或是给老人发短信问候语,立即的增加衣服留意身心健康,产生天冷注意保暖的语句。 天冷注意保暖的问侯 1. 冬季那麼冷,我想要一个溫暖的被子,不容易断开连接的wifi,再再加上吃剩的零食,假如这种都不能,那是否可以使给我一个你。 2. 冬...

评论列表

性许猫卆
2年前 (2022-06-22)

悲观锁定是指对被外界修改的数据保持保守的态度,即在数据处理过程中锁定数据。这个功能需要依靠数据库提供的锁定机制,否则即使在系统中实现了锁定机制,也不能保证外部系统不会修改数据。锁定模式锁定模式。没有无锁机构锁定模式。阅读Hiber

泪灼掩吻
2年前 (2022-06-22)

悲观锁定是指对被外界修改的数据保持保守的态度,即在数据处理过程中锁定数据。这个功能需要依靠数据库提供的锁定机制,否则即使在系统中实现了锁定机制,也不能保证外部系统不会修改数据。锁定模式锁定模式。没有无锁机构锁定模式。阅读Hibernate在读取记录时

青迟木緿
2年前 (2022-06-22)

只能在T2提交后才能成功修改。推荐教程:MySQL教程

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。