追问高并发第二种解决方案
来源:13-2 通用电商下单服务+库存高并发控制逻辑实现(上)
慕斯0066757
2019-09-13
老师,您好!因为特别想学会在一般应用中对于并发多一种手段解决的方案,故此追问一下:
一、按照老师给予的思路,本人思考的结果如下:
1.在商品表增加一个版本号version的字段
2.每次后台更新时,让其version + 1
3.今后,遇到一般应用下的库存并发问题,除悲观锁的方法以外,使用乐观锁的方式:
UPDATE book SET stock = 2,version = version + 1 WHERE id = 1 AND stock = 5 AND version = version;
老师,以上思路,是否正确?
二、最后最后最后还有一个疑惑点,如红色框标注的内容
a用户、b用户同时并发进来
假设a用户购买3本先执行:UPDATE book SET stock = 2 WHERE id = 1 AND stock = 5;
此时后台管理员将库存又重新修改成了5本
b用户购买3本再执行:UPDATE book SET stock = 2 WHERE id = 1 AND stock = 5;
那对于b用户来说,从理论来说,b用户同样也可以下单成功,既然b用户也能下单成功,为什么老师说会出现问题呢?
写回答
1回答
-
你好
第一个问题是你理解的这样。
第二个问题我说的有问题 是针对你说的情况,但是针对用户来讲 一个是失败,一个是成功,这样的用户体验问题。
从代码角度是没有任何问题的
从你的提问和理解来看,你是完全掌握了数据库的两种锁了。
112019-09-15
相似问题