乐观锁与悲观锁

悲观锁

思想

认为并发会频繁发生,为防止读取数据库时没有读到最新的数据,导致数据错误,秉承”宁可错杀,不可放过“的思想,在线程访问时,会将数据加锁,当其他线程再访问时,因锁未释放,会进入等待,待加锁线程释放锁后,再继续执行后续逻辑

常见实现方式

为数据库中的数据加行锁、表锁

乐观锁

思想

认为并发不是频繁发生,每次先查询版本号,再执行后续逻辑,若在后续查询或更新时,数据对应的版本号不是前面查询到的版本号,则立即向用户返回提示信息

常见实现方式

CAS

数据库版本号:数据库增加version字段,每次更新表数据时,version+1,更新数据前先查询版本号,再按照查询的版本号更新

乐观锁和悲观锁选型

悲观锁:适用于写操作频繁的业务场景,但会锁住行,导致其他线程等待,用户体验感不好

乐观锁:适用于读多写少的业务场景,若其他线程已对数据进行更改,则根据业务需求,使用自旋,或者立即返回提示

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值