Этот вопрос является логическим продолжением этого вопроса:
Сколько строк будет заблокировано командой 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. Но ... я не уверен. Можете ли вы уточнить?