sql >> Database teknologi >  >> RDS >> Mysql

inno db isolationsniveauer og låsning

InnoDB indstiller specifikke typer låse som følger.

  • SELECT ... FROM er en konsekvent læsning, læser et øjebliksbillede af databasen og indstiller ingen låse, medmindre transaktionsisolationsniveauet er sat til SERIALIZABLE. For SERIALIZABLE-niveauet sætter søgningen delte næste-tastlåse på de indeksposter, den støder på.

  • VÆLG ... FRA ... LÅS I DELE-TILSTAND sætter delte næste-tastlåse på alle indeksposter, som søgningen støder på.

  • For indeksposter, som søgningen støder på, VÆLG ... FRA ... FOR OPDATERING blokerer andre sessioner fra at udføre VÆLG ... FRA ... LÅS I DELE-TILSTAND eller fra at læse i bestemte transaktionsisolationsniveauer. Konsistente læsninger vil ignorere eventuelle låse, der er sat på de poster, der findes i læsevisningen.

  • OPDATERING ... WHERE ... indstiller en eksklusiv næste-tastlås på hver post, søgningen støder på.

  • DELETE FROM ... WHERE ... indstiller en eksklusiv næste-tastlås på hver post, søgningen støder på.

  • INSERT sætter en eksklusiv lås på den indsatte række. Denne lås er en indeks-registreringslås, ikke en næste-tast-lås (det vil sige, der er ingen mellemrumslås) og forhindrer ikke andre sessioner i at indsætte i mellemrummet før den indsatte række.

InnoDB har flere typer låse på rekordniveau:

  • Record lock:Dette er en lås på en indekspost.

  • Mellemrumslås:Dette er en lås på et mellemrum mellem indeksposter eller en lås på mellemrummet før den første eller efter den sidste indekspost.

  • Næste-tastlås:Dette er en kombination af en registreringslås på indeksposten og en spaltelås på mellemrummet før indeksposten.

Se mere :

Undgå Phantom-problemet ved at bruge Next-Key-låsning

Undgå dødvande



  1. Tilføj masser af data med et vist tidsinterval i Java

  2. Hvordan forespørger jeg mellem to datoer ved hjælp af MySQL?

  3. Ruby on Rails:Hvordan kan jeg redigere database.yml til postgresql?

  4. Skjult ydeevne og håndteringsforbedringer i SQL Server 2012/2014