sql >> Databasteknik >  >> RDS >> Mysql

inno db isoleringsnivåer och låsning

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

Undvika dödläge



  1. Det går inte att skicka text till MySQL med Infoga i

  2. SQL Val av data från tre tabeller relaterade

  3. MySQL-strängbyte

  4. Så här frågar du GROUP BY Month in a Year