3

这个问题是这个问题的逻辑延续:

SELECT ... ORDER BY xxx LIMIT 1 FOR UPDATE 将锁定多少行?

假设我有这样的选择:

SELECT id, status FROM job WHERE status = XXX AND id IN (1, 2, 3) FOR UPDATE

id 是主键,状态是索引。

在这种情况下,MySQL 锁定策略是什么?

  1. 锁定仅匹配两个条件的行
  2. 锁定所有符合第一个条件的行 + 分别锁定所有符合第二个条件的行
  3. 锁定整个表

我认为最合乎逻辑的是2。但是......我不确定。你能详细说明吗?

4

1 回答 1

1

好吧,我进行了测试,他们表明选项 1 在这种情况下有效。

锁定仅匹配两个条件的行

于 2011-04-22T17:44:54.260 回答