一、并发业务场景
库存业务,stock(sid, num),其中:
sid为库存id
num为库存值

如上图所示,两个并发的查询库存操作,同时从数据库都得到了库存是5。
接下来用户发生了并发的库存扣减动作:

如上图所示:
用户1购买了3个库存,于是库存要设置为2
用户2购买了2个库存,于是库存要设置为3
这两个设置库存的接口并发执行,库存会先变成2,再变成3,导致数据不一致(实际卖出了5件商品,但库存只扣减了2,最后一次设置库存会覆盖和掩盖前一次并发操作)
二、不一致原因分析
出现数据不一致的根本原因,是设置操作发生的时候,没有检查库存与查询出来的库存有没有变化,理论上:
仅库存为5的时候,用户1的库存设置2才能成功
仅库存为5的时候,用户2的库存设置3才能成功
实际执行的时候:
库存为5,用户1的set stock 2确实应该成功
库存变为2了,用户2的set
继续阅读与本文标签相同的文章
下一篇 :
MySQL双主一致性架构优化 | 架构师之路
-
一分钟了解索引技巧 | 架构师之路
2026-05-20栏目: 教程
-
了解Kubernetes
2026-05-20栏目: 教程
-
C++这么难,为什么还要学习C++呢?如何学?
2026-05-20栏目: 教程
-
1对多业务,数据库水平切分架构一次搞定 | 架构师之路
2026-05-20栏目: 教程
-
工作线程数究竟要设置为多少 | 架构师之路
2026-05-20栏目: 教程
