Mybatis 如何使用 Mysql 悲观锁,求解答

Mybatis 如何使用 Mysql 悲观锁,求解答,第1张

悲观锁就是数据库里面锁住 类似for update查询

乐观锁不是在数据库端锁住的

而是程序控制的

你说的那Mybatis我不知道是什么

但是乐观锁一般是这样

比如你数据库中有一条记录

你可以给他加上一个版本号

这样

如果同时有2个人查询出那个数据要修改

第一个人先查出来有事走了

第二个人查出来给改了

这时候你看

第一个人查出来的数据版本号比如是1

第二个人查出来也是1 但是他改了数据以后版本号变成2

这时候第一个人回来了继续修改数据

他的版本号是1 比2低

这时候就告诉他数据过期

乐观锁大概就是这个意思

是一种思路!

悲观锁和乐观锁定义:

乐观锁:乐观锁在 *** 作数据时非常乐观,认为别人不会同时修改数据。因此乐观锁不会上锁,只是在执行更新的时候判断一下在此期间别人是否修改了数据:如果别人修改了数据则放弃 *** 作,否则执行 *** 作。

悲观锁:悲观锁在 *** 作数据时比较悲观,认为别人会同时修改数据。因此 *** 作数据时直接把数据锁住,直到 *** 作完成后才会释放锁;上锁期间其他人不能修改数据。

悲观锁实现方式

悲观锁的实现,往往依靠数据库提供的锁机制。在数据库中,悲观锁的流程如下:

1.在对记录进行修改之前,先尝试为该记录加上排它锁(exclusive locking)。

2.如果加锁失败,说明该记录正在被修改,那么当前查询可能要等待或者抛出异常。具体响应方式由开发者根据实际需要决定。

3.如果成功加锁,那么就可以对记录做修改,事务完成后就会解锁了。

4.期间如果有其他对该记录做修改或加排它锁的 *** 作,都会等待解锁或直接抛出异常。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9996805.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-04
下一篇2023-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存