专栏名称: 码小辫
给程序员和编程爱好者分享计算机编程电子书以及相关的学习资源
今天看啥  ›  专栏  ›  码小辫

为什么库存扣减不需要加锁?尤其是乐观锁?

码小辫  · 公众号  ·  · 2024-09-24 17:10

文章预览

作者 l Hollis 来源 l Hollis(ID:hollischuang) 库存扣减的方法中(本文特指数据库的扣减,不包含 Redis 层),我们全程是没有加锁的,甚至乐观锁都没加。 没加悲观锁是因为秒杀场景不适合用悲观锁,那么为啥乐观锁都没加呢?这个是我们的库存预扣减的 SQL: 大家可以先忽略 SQL 中` /*+ COMMIT_ON_SUCCESS ROLLBACK_ON_FAIL TARGET_AFFECT_ROW 1 */`部分内容,这是利用了阿里云 DMS 的 Inventory Hint 的机制抗高并发的实现。具体可以到我的项目课程中学习。 如上的 SQL 中,我们只做了数量的扣减,以及数量的上限的控制。但是没有通过 lock_version 做乐观锁的版本控制。 虽然我们用了MybatisPlus。也用到了他的@Version 注解,但是我们自己写的 SQL 的这种方式,MyBatisPlus 也不会主动帮我们加乐观锁的控制: 那就是说我们这里没有做加锁,为什么呢? 如果你知道乐观锁和悲观锁的 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览