Als u het transactie-isolatieniveau instelt op SERIALIZABLE
, InnoDB
wil implicie toevoegen LOCK IN SHARE MODE
aan alle SELECT
verklaringen.
Deze modus is in strijd met de vergrendelingen die zijn geplaatst door SELECT FOR UPDATE
en de SELECT
s worden vergrendeld.
Merk echter op dat InnoDB
kan meer rijen vergrendelen dan voldoen aan de WHERE
voorwaarde. Dit komt omdat het alle rijen vergrendelt gescand , niet alleen die overeenkomstig .
Stel, je hebt een index op col1
en deze vraag:
SELECT *
FROM mytable
WHERE col1 = 1
AND col2 = 2
FOR UPDATE
gebruikt deze index.
Dit vergrendelt alle records met col1 = 1
, zelfs die met col2 <> 2