秒杀(6)——解决超卖(减少库存)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaojie_570/article/details/87718045

一、超卖的原因

假设某个抢购场景中,我们一共有100个商品,在最后一刻,我们已经消耗了99个商品,现在剩下最后一个。这个时候,系统发来了多个并发请求,这批请求读到的商品余额都是1,然后都通过了这个余额判断,最终导致超卖。

二、超卖问题解决的办法

在数据库层面来解决超卖问题。

  • 【修改一】在mysql 的 sql 中增加一个判断库存的条件

在这里插入图片描述

  • 【修改二】在表 miaosha_order表上增加一个唯一索引(user_id, goods_id)

在这里插入图片描述

然后在 service 层加入一个 @Transactional 注解

在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/xiaojie_570/article/details/87718045
今日推荐