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