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