美文网首页
java减库存

java减库存

作者: 凯凯frank | 来源:发表于2020-10-01 20:46 被阅读0次

问题:

假设当前库存200,现在需要减150库存
多线程并发时
AB同时开启事务,A先请求到行锁,
A:
start transaction;
select num from t ;先查询当前库存值
判断库存是否>=150,是的话,update t set num=num-150;

B:
start transaction;
select num from t ;先查询当前库存值
判断库存是否>=150,是的话,update t set num=num-150;
----结果---
A:查询到num=200,做了库存减量成了50
B:事务启动后,查询到也是200,等 A 释放了行锁,B进行update,直接变成 -100

解决方法:

select 加锁虽然可以(select num from t for update),但是会比较严重地影响并发数。

比较简单的做法是update语句的where 部分加一个条件: where nun >=150.(update t set num=num-150 where num >=150)
然后在程序里判断这个update 语句的affected_rows,
如果等于1 那就是符合预期;
如果等于0,那表示库存不够减了,业务要处理一下去,比如提示“库存不足”

相关文章

  • java减库存

    问题: 假设当前库存200,现在需要减150库存多线程并发时AB同时开启事务,A先请求到行锁,A:start tr...

  • 电商相关

    预扣库存 商品发布时,可以选择扣减库存模式为 拍下减库存或者付款减库存。 但是拍减存在恶拍情况;付款减库存存在超卖...

  • 下单减库存与付款减库存

    目前减库存主要有两种方式:下单减库存、付款减库存。 下单减库存是指当买家拍下商品后,商品商品显示的库存数量就会相应...

  • 秒杀系统“减库存”设计逻辑

    减库存有哪几种方式 下单减库存 当买家下单后,在商品的总库存中减去买家购买数量。下单减库存是最简单的减库存方式...

  • 电商-减库存方式

    电商-减库存方式 在订单的模块中,有两种减库存的方法,一种是下单减库存,一种是付款减库存,还有广大网友说的一种预扣...

  • 2017-04-08

    付款减库存,付款减库存 有些产品付款后就再也没有了哦

  • PHP 高并发情况的简单模拟,thinkphp

    看下面代码,一个简单的减库存模拟. 一,并发扣库存 1.原始数据里面有100个库存 2.下面进行减库存操作,代码如...

  • Day83 分布式事务解决方案 & 中台架构落地

    2 阶段,创建订单,扣减库存 请求调用订单服务 1 创建订单---> 订单库 2 库存库减库存. 订单服务 ...

  • 干货 | 电商项目扣减库存方案

    大家是不是在面试过程中经常被问到,你电商项目扣减库存时,到底是下单减库存呢?还是付款减库存? 那今天给大家出几种解...

  • 《淘宝产品十年事》笔记

    看完淘宝产品十年事,记录下里面两个自己之前没有认知的问题:减库存问题和预售问题; 1、减库存问题; 到底什么时候减...

网友评论

      本文标题:java减库存

      本文链接:https://www.haomeiwen.com/subject/ufkvuktx.html