电商秒杀这种高并发场景,要实现库存扣减,如果做到不会把库存扣成负数呢?

我想问下,想电商秒杀这种高并发场景,要实现库存扣减,如果做到不会把库存扣成负数呢?因为扣减库存需要先 selectupdate,而 select 得到了还有一个库存,A去 update -1了,但是该时刻,B select 得到了还有一个库存,B也去 update -1了。这样库存就变成了负数了。这个问题好像用事务无法处理,需要用锁吗?用哪种锁比较合适呢?尽量照顾性能

我想到下面几种方法:

  • 使用 update 行锁?
  • case when
  • 把库存字段设置为 unsigned int
阅读 3.5k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题