这个问题是这个问题的逻辑延续:
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 锁定策略是什么?
- 锁定仅匹配两个条件的行
- 锁定所有符合第一个条件的行 + 分别锁定所有符合第二个条件的行
- 锁定整个表
我认为最合乎逻辑的是2。但是......我不确定。你能详细说明吗?