gpt4 book ai didi

mysql - 对同一行的并发更新

转载 作者:行者123 更新时间:2023-11-29 06:02:58 28 4
gpt4 key购买 nike

如果我同时从不同的客户端发出以下 2 个查询,我试图弄清楚 MySQL/InnoDB 中应该发生什么:

UPDATE tbl SET a=a+1 WHERE id=123;
UPDATE tbl SET b=b+1 WHERE id=123;

假设查询是在没有显式事务或较早设置显式早期锁定的情况下完成的,documentation 的方式解释一下,每个查询都会尝试获取一个 next-key 锁,因此有效地获取更新行上的记录锁。

我的理解是否正确,最坏的结果是一个查询等待锁定直到另一个查询完成?这里不可能有冲突的异常(exception),对吧?

最佳答案

你是对的。两次更新操作会依次序列化。它们的顺序很难预测,因此您不应该尝试。

如果第三个查询几乎同时询问 SELECT a, b FROM tbl WHERE id=123,则该查询将不可预测地与其他查询序列化。所以它可能发生在其他两个之前、之间或之后。

两个更新查询最终都会完成。导致死锁需要的不仅仅是这些查询。

关于mysql - 对同一行的并发更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43669189/

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