Pokud nastavíte úroveň izolace transakcí na SERIALIZABLE
, InnoDB
wil implicitně připojit LOCK IN SHARE MODE
všem SELECT
prohlášení.
Tento režim je v konfliktu se zámky umístěnými pomocí SELECT FOR UPDATE
a SELECT
s se uzamkne.
Všimněte si však, že InnoDB
může zamknout více řádků, než vyhovuje WHERE
stav. Je to proto, že zamyká všechny naskenované řádky , nejen ty shodné .
Řekněme, že máte index na col1
a tento dotaz:
SELECT *
FROM mytable
WHERE col1 = 1
AND col2 = 2
FOR UPDATE
používá tento index.
Tímto uzamknete vše záznamy s col1 = 1
, dokonce i ty s col2 <> 2