超卖问题

  • 超卖问题原因:这里假设两台程序服务器,一台数据库服务器
  • 由于是高并发,假设有三个用户a,b,c同时抢购该物品,并进入到了这个事务中,这三个用户查到的库存数是一样的(MySQL rr级别下总是读取事务开始时的行数据)
  • 然后进入到update,假设这三个用户同时进入update操作,这个时候由于 行级锁的排他性限制,MySQL会将update操作串行化
  • 上面update执行完后,有可能会发生库存变为负数的情况(超卖)

解决方法:1、数据库锁

2、缓存redis锁

原文地址:https://www.cnblogs.com/yao5758/p/14318399.html