gpt4 book ai didi

mysql - 如何在innodb中实现隐式行级锁定?

转载 作者:行者123 更新时间:2023-11-29 11:00:39 26 4
gpt4 key购买 nike

我正在使用MySql(innodb存储引擎)。我想在更新语句上实现行级隐式锁定。因此,没有其他事务可以同时读取或更新该行。

示例:事务1正在执行“更新客户SET City='汉堡'WHERE CustomerID=1;"

然后,同时 Transaction2 应该无法读取或更新同一行,但 Transaction2 应该能够访问其他行。

如有任何帮助,我们将不胜感激。感谢您抽出时间。

最佳答案

如果没有其他语句支持该UPDATE,则它是原子的。

例如,如果您需要在决定更改该行之前查看该行,那么情况会稍微复杂一些:

BEGIN;
SELECT ... FOR UPDATE;
decide what you need to do
UPDATE ...;
COMMIT;

COMMIT之前,没有其他连接可以更改SELECTed行。

其他连接可以看到所涉及的行,但它们可能看到的是 BEGIN 开始之前的值。读书通常并不重要。通常重要的是 BEGINCOMMIT 之间的所有内容都是“一致的”,无论其他连接中发生了什么。

您的连接可能会延迟,等待另一个连接释放某些内容(例如SELECT...FOR UPDATE)。其他一些连接可能会延迟。或者可能会出现“死锁”——当 InnoDB 认为等待不起作用时。

关于mysql - 如何在innodb中实现隐式行级锁定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42334053/

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