乐观锁

在高并发的情况下,数据在update时可能会溢出。就是超出你想要的一个范围。我们可以使用乐观锁来解决。
添加一个verison字段,把verison查出来,比如我查出来当前这一条的数据的verison是3,当我要执行update时,判段我查出的verison是否是最新了verison.。
像这样

update test set test_column=0 where verison=3   

这样在高访问情况下,就不会出错
如果上条语句没有正确执行,就代表数据己经更新过了,己经不是我之前查出来verison为3的数据了。我要重新进行查询。如果正确执行了,就代表我的数据行是最新的,可以进行更新,然后让此数据行的verison自增+1。

举个例子,例如商品的超买,一个用户把一个商品加入购物车时,我们要判段商品的库存是否为零,然后把商品的库存减1,可是在高并发的情况,如果当前的库存为1的时候可能会有多个程序进程同时读取数据库,这些进程得到的库存都是不为零,所以这些进程都会执行update,导至库存为负数。
这时我们就要上乐观锁了,在update时候判段我这个进程所查出来数据行的version是不是最新的。判段方法就是update时判段我这个进程查出来的数据行version是不是最新verison。如果执行失败,就代表不是最新的。这时,我们就要重新查询库存数量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值