先从我们最原始的秒杀结构开始。
设置一个商品表:id 商品名 价格 库存 介绍
设置一个订单表:订单id 商品id 库存
以下是我们用户在点击购买时生成订单的过程:
下单接口通过传入商品id执行下单操作。
1.先查出商品库存,如果库存少于0则返回“商品库存已售完”。
2.库存不为0,创建秒杀订单。
3.最后再在数据库中进行库存减1。
开始秒杀相关优化:
- 乐观锁(状态控制)
在我们的减库存sql语句不能再写传统的基础写法,这里要使用乐观锁来保证并发场景下的线程安全!(状态控制:数据库控制的行锁,不会出现超卖的bug)
update product
set stock=stock-1