乐观锁适合冲突不高、失败可以重试的场景。库存扣减如果并发很高,简单乐观锁可能导致大量重试。

UPDATE stock SET num = num - 1, version = version + 1
WHERE sku_id = ? AND version = ? AND num > 0

低并发库存可以用乐观锁,高并发秒杀更适合预扣、队列、分片库存或 Redis 原子扣减后异步落库。

技术选择要看冲突概率。冲突低时乐观锁简单,冲突高时它会把压力变成数据库重试风暴。

分类: 数据库与缓存 标签: 事务 MySQL 高并发

评论

-- 评论已关闭 --

全部评论