库存中心并发下锁、死锁

1、并发下锁的问题:其实这有两个问题,第一并发下数据的脏读脏写,第二就是防止并发下导致为了防止脏读脏写的而产生的其他问题(例如死锁)。

这里不再阐述相关的锁机制,我只说明项目中使用的锁以及遇到的问题。

库存中心这里我使用了三种机制:悲观锁、乐观锁、数据库CAS操作。

个人认为悲观锁、乐观锁最终还是在代码逻辑层面去控制数据读写,悲观锁实现简单,但是坑多,乐观锁实现稍微复杂,效率也较高。CAS则是在我们写代码时时时刻刻要考虑到的问题,他能保证我们少走坑,保证数据准确性。

1.1为何使用悲观锁:

不言而喻,使用简单,对一般项目而言,并发要求不是非常高的前提下,悲观锁足以适用。但是悲观锁使用起来搞不好就死锁。

1.1.1使用坑点:不排序基本就会死锁,对悲观锁一定要排序(第一、主键排序,针对有些场景不适用,比如存在更新或者插入数据的混合操作,第二、其他字段排序,针对mysql、oracle等排序或者查询的字段必须是主键或者增加了索引的字段,不然会直接锁表,pgsql则还是行级锁,不过防止一切问题,还是针对加索引的字段排序。)

排序的数据跟更新数据顺序必须一致,不然一定死锁(这里不仅仅包括查询出来的数据,还要包括相关的数据,举个栗子:我查

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值