0
mysql 减库存并发问题
source link: https://www.v2ex.com/t/816733
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
减库存数量为 num
update mytable set inventory = inventory-num WHERE id= 1 and inventory >=num
这样减库存不用加乐观锁和悲观锁,也可以是吧
但是有什么弊端吗
11 条回复 • 2021-11-20 13:39:32 +08:00
zjsxwc 1 小时 21 分钟前
有效解决并发数据一致性问题,我能想到就两种方式:
一种是用增量式记录的方式,每次数据获取(比如这里的库存)其实是根据历史记录“算”出来的,这里可以通过缓存中间计算、定时归档等方式加速“算”的速度,缺点是占用空间比较大。
一种就是单一队列方式,就是排队序列化处理,缺点是时间长速度慢。
一种是用增量式记录的方式,每次数据获取(比如这里的库存)其实是根据历史记录“算”出来的,这里可以通过缓存中间计算、定时归档等方式加速“算”的速度,缺点是占用空间比较大。
一种就是单一队列方式,就是排队序列化处理,缺点是时间长速度慢。
bigbyto 1 小时 11 分钟前 via iPhone
为啥都在顾左右而言他?我认为这条是没问题的,你那条 sql 会给 id 为 1 的索引加 X Lock ,其他事务想修改必须等你释放锁,因此在默认的隔离级别下是可以保证一致性的。
除了 READ_UNCOMMITED 不行,其他隔离级别应该都没问题。
除了 READ_UNCOMMITED 不行,其他隔离级别应该都没问题。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK