协程下如何保证并发超卖问题

来源:6-1 Btree索引和Hash索引

长脚的海星星

2019-05-08

我又一个order表,在开启事务后对order表中的count字段select查询。
如果 count<100 则进行其他sql逻辑,然后对 order表中的count+1。

我由于是协程并行的,用jmeter请求并发,会出现超卖的问题。 解决办法如下:
1、把隔离界别修改为串行化后,任然会有这个问题。
2、在对order表中的count查询的时候 使用 FOR UPDATE锁表,在sql不堵塞的情况下不会超卖,但是一旦SQL堵塞或者超时会出现超卖。

请问如何解决

写回答

1回答

sqlercn

2019-05-08

可以尝试用消息队列处理,把扣减库存的操作放入队列中,由一个线程进行队列处理

0
2
sqlercn
回复
长脚的海星星
这只是一个建议,不用redis也可以选用其它的消息队列。其实思路就是串行化库存扣减
2019-05-09
共2条回复

MySQL提升课程 全面讲解MySQL架构设计

面面俱到讲解影响MySQL性能的各个因素,让MySQL架构了然于胸。

4419 学习 · 547 问题

查看课程