InnoDB stelt specifieke soorten sloten als volgt in.
-
SELECT ... FROM is een consistente leesbewerking, waarbij een momentopname van de database wordt gelezen en geen vergrendelingen worden ingesteld, tenzij het transactie-isolatieniveau is ingesteld op SERIALIZABLE. Voor het SERIALIZABLE-niveau stelt de zoekopdracht gedeelde volgende-sleutelvergrendelingen in op de indexrecords die het tegenkomt.
-
SELECTEER ... UIT ... VERGRENDELEN IN DE DELENMODUS stelt gedeelde volgende-sleutelvergrendelingen in op alle indexrecords van de zoekontmoetingen.
-
Voor indexrecords waar de zoekacties plaatsvinden, blokkeert SELECT ... FROM ... FOR UPDATE andere sessies om SELECT ... FROM ... LOCK IN SHARE MODE te doen of om bepaalde transactie-isolatieniveaus in te lezen. Consistent lezen negeert eventuele vergrendelingen die zijn ingesteld op de records die in de leesweergave bestaan.
-
UPDATE ... WAAR ... stelt een exclusieve volgende toetsvergrendeling in op elk record dat de zoekopdracht tegenkomt.
-
DELETE FROM ... WHERE ... stelt een exclusieve next-key lock in op elke record die de zoekopdracht tegenkomt.
-
INSERT stelt een exclusief slot in op de ingevoegde rij. Deze vergrendeling is een index-recordvergrendeling, geen volgende-sleutelvergrendeling (dat wil zeggen, er is geen openingvergrendeling) en verhindert niet dat andere sessies in de opening vóór de ingevoegde rij worden ingevoegd.
InnoDB heeft verschillende soorten vergrendelingen op recordniveau:
-
Record lock:Dit is een lock op een index record.
-
Gap lock:Dit is een slot op een gat tussen indexrecords, of een slot op het gat voor het eerste of na het laatste indexrecord.
-
Next-key lock:Dit is een combinatie van een record lock op het index record en een gap lock op het gat voor het index record.
Meer bekijken :
Het fantoomprobleem vermijden met Next-Key Locking