什么是乐观锁?SpringBoot项目中如何使用Mybatis-plus实现乐观锁

什么是乐观锁?SpringBoot项目中如何使用Mybatis-plus实现乐观锁

1、乐观锁

主要用来解决丢失更新问题

2、什么是丢失更新

丢失更新:当两个用户,用户A和用户B对同一数据C的年龄(10)进行修改时,因为即使在高并发的时候,提交也会有先后顺序,A将C的年龄10修改为20之后,B将C的年龄10修改为30,最后查询数据时,查询的是B修改后的数据,这就是丢失更新正确的情况应该是,A先将年龄修改为20,B修改20为30,而不是两个用户同时修改10

3、怎么解决丢失更新问题

针对丢失更新问题,一般有两种解决方案:悲观锁、乐观锁。悲观锁: 当A用户进行修改时,其他用户等待,不能对数据进行操作,等待A操作完成,效率低乐观锁:在数据中添加一个字段,版本version,当查询数据时获取当前版本号,更新时带着版本号执行更新后版本号+1,如果版本号不对,则更新失败。

4、什么时候使用乐观锁

提到乐观锁就要简单回顾一下事务,事务有四大特性:原子性 一致性 隔离性 持久性当我们单个用户操作的时候,则不需要考虑事务的隔离性,当产生高并发时,多个用户同时对数据库进行操作,如果不考虑事务隔离性,在用户进行查询操作时,会产生脏读、幻读、不可重复读等问题.在用户进行修改操作时,会产生丢失更新问题.此时用到乐观锁

具体解释

起初C数据的版本号为1,A和B同时查询到年龄数据,此时获得相同的版本号1,A修改时版本号与起初版本号一致,则可以修改数据,当A修改了年龄之后,提交修改,此时C数据的版本号+1变为2,当B再进行修改时,B所获得的版本号1与A修改后的版本号2不一致,则修改失败。

5、乐观锁应用场景

12306抢票,很多人在抢同一张票,当第一个人支付成功之后,其他人则不能支付。

<
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值