gpt4 book ai didi

mysql - select 查询在并行执行时执行错误结果

转载 作者:行者123 更新时间:2023-11-29 17:19:51 24 4
gpt4 key购买 nike

以下是我的场景

我有名为

的表
Products

id | name | count | Price
-------------------------
1 | meat | 1 | 10


Users

id | name | balance
-----------------
1 | Tim | 10
2 | Joe | 10

工作流程

如果数量 >= 1,则选择产品,
减少用户余额并计数 = count - 1
如果 no_balance 或 count < 1 抛出错误

假设两个用户同时下订单 1 个产品,产品表计数更新为 -1,意味着两个用户都执行查询。

产品

id | name | count | Price 
-------------------------
1 | meat | -1 | 10

在下订单期间,我使用以下查询来选择匹配的产品

Select * from products where count >= 1 and price >= 10

此外,如果用户下订单的时间差很小,预期的输出也会聚集。

有什么解决办法吗?

最佳答案

例如,您应该考虑对每一行使用lock

从数量 >= 1 且价格 >= 10 的产品中选择 * 进行更新。

但在您的场景中,我建议您使用 Redis 来执行此操作。

How to design a second kill system for online shop

关于mysql - select 查询在并行执行时执行错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51320189/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com