MySQL队列是否插入/更新?

时间:2017-01-11 17:03:00

标签: mysql isolation-level

假设我有更新查询,例如:

UPDATE accountstable SET bal = bal - 0.5 where bal >= 0.5 and id = 1

仅当用户帐户的余额大于或等于0.5时才从用户帐户中减去0.5。

如果查询运行两次,两个实例几乎都在同一时间开始,那么MySQL会并行运行两个查询,还是以顺序/排队的方式运行(等待第一个实例在运行第二个实例之前完成)?

如果以顺序方式运行,那么余额为0.5的帐户在两次查询完成后的余额是0还是-0.5?

1 个答案:

答案 0 :(得分:0)

这是一场竞争条件:)......请阅读有关如何打击它的信息:

https://dba.stackexchange.com/questions/61603/how-to-query-and-increase-a-value-counter-in-a-thread-safe-way-avoid-race-co

简而言之,您可以使用交易来防范它。