Jeśli ustawisz poziom izolacji transakcji na SERIALIZABLE , InnoDB wil niejawnie dołącza LOCK IN SHARE MODE do wszystkich SELECT oświadczenia.
Ten tryb jest w konflikcie z blokadami umieszczonymi przez SELECT FOR UPDATE i SELECT s zostaną zablokowane.
Pamiętaj jednak, że InnoDB może zablokować więcej wierszy niż spełnia WHERE stan :schorzenie. Dzieje się tak, ponieważ blokuje wszystkie wiersze zeskanowane , nie tylko tych pasujących .
Powiedzmy, że masz indeks na col1 i to zapytanie:
SELECT *
FROM mytable
WHERE col1 = 1
AND col2 = 2
FOR UPDATE
używa tego indeksu.
To zablokuje wszystkie rekordy z col1 = 1 , nawet te z col2 <> 2