InnoDB ställer in specifika typer av lås enligt följande.
-
SELECT ... FROM är en konsekvent läsning, läser en ögonblicksbild av databasen och ställer inga låsningar om inte transaktionsisoleringsnivån är inställd på SERIALIZABLE. För SERIALIZABLE-nivån ställer sökningen in delade nästa-knappslås på indexposterna som den stöter på.
-
VÄLJ ... FRÅN ... LÅS I DELNINGSLÄGE ställer in delade nästa-knappslås på alla indexposter som sökningen stöter på.
-
För indexposter som sökningen möter, VÄLJ ... FRÅN ... FÖR UPPDATERING blockerar andra sessioner från att göra VÄLJ ... FRÅN ... LÅS I DELNINGSLÄGE eller från att läsa in vissa transaktionsisoleringsnivåer. Konsekventa läsningar ignorerar alla lås som ställts in på de poster som finns i läsvyn.
-
UPPDATERA ... WHERE ... sätter ett exklusivt nästa-knappslås på varje post som sökningen stöter på.
-
DELETE FROM ... WHERE ... ställer in ett exklusivt nästa-knappslås på varje post som sökningen stöter på.
-
INSERT sätter ett exklusivt lås på den infogade raden. Det här låset är ett indexregisterlås, inte ett nästa-knappslås (det vill säga det finns inget mellanrumslås) och hindrar inte andra sessioner från att infogas i mellanrummet före den infogade raden.
InnoDB har flera typer av lås på rekordnivå:
-
Postlås:Detta är ett lås på en indexpost.
-
Gap lock:Detta är en låsning på ett gap mellan indexposter, eller ett lås på gapet före den första eller efter den sista indexposten.
-
Nästa knapplås:Detta är en kombination av ett postlås på indexposten och ett lucklås på gapet före indexposten.
Se mer :
Undvika fantomproblemet med hjälp av Next-Key Locking