この質問は、これの論理的な続きです。
SELECT ... ORDER BY xxx LIMIT 1 FOR UPDATEによってロックされる行数はいくつですか?
私がそのようなSELECTを持っているとしましょう:
SELECT id, status FROM job WHERE status = XXX AND id IN (1, 2, 3) FOR UPDATE
idは主キーで、ステータスはインデックスに登録されます。
この場合のMySQLロック戦略は何ですか?
- 両方の条件にのみ一致する行をロックする
- 最初の条件に一致するすべての行をロックし、2番目の条件に一致するすべての行を個別にロックします
- テーブル全体をロックする
最も論理的なのは2だと思います。しかし...わかりません。詳細を教えていただけますか?