乐观锁 悲观锁

乐观锁 和 悲观锁 是针对处理并发资源的采用的方式

与mysql中提供的锁机制(表锁,行锁,排他锁,共享锁)不能混为一谈

悲观锁:就是对于数据的处理持悲观态度,总认为会发生并发冲突,获取和修改数据时,别人会修改数据。所以在整个数据处理过程中,需要将数据锁。

乐观锁:顾名思义,就是对数据的处理持乐观态度,乐观的认为数据一般情况下不会发生冲突只有提交数据更新时,才会对数据是否冲突进行检测。如果检测有冲突,交给用户处理。

 

悲观锁实现:

  • 利用 数据库 锁机制
  • 比如mysql的排他锁,select .... for update来实现悲观锁
  • 需要关闭mysql自动提交功能,set autocommit = 0

 

乐观锁实现:

  • 给表加一个版本号或时间戳的字段,读取数据时,将版本号一同读出,数据更新时,将版本号加1或者更新时间戳。
  • 当我们提交数据更新时,判断当前的版本号与第一次读取出来的版本号是否相等。如果相等,则予以更新,否则认为数据过期,拒绝更新,让用户重新操作。
  • 程序处理,不会产生死锁
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值