sql >> Databasteknik >  >> RDS >> Database

Tips för läs-/skrivlås beroende på transaktionsisoleringsnivå i MSSQL

Läs oengagerad

  • Om data ändras i en transaktion, kommer valet av dessa data (i en annan transaktion eller utan en transaktion) inte att vänta tills den första transaktionen är avslutad och kommer att returnera datainmatningar för ej genomförda transaktioner.
  • Om data läses i en transaktion kommer uppdateringar av denna data i en annan transaktion inte att vänta tills den första transaktionen är klar.
  • Delade lås används inte. Identiskt med inställningen t han NOLOCK tips för alla val i Läs engagerad.
  • Exklusiva lås är aktiverade under programutförandet och inaktiverade i slutet av f transaktion .

Läs engagerad + read_committed_snapshot av
(ändra databasen xxx inaktiverad read_committed_snapshot)

  • Om data ändras i en transaktion, kommer valet av dessa data (i en annan transaktion eller utan en transaktion) att vänta tills den första transaktionen är klar. Välj ct med den NOCHECK tips kommer att returnera modifierad, men oengagerad data.
  • Om data läses i en transaktion kommer uppdateringar av denna data i en annan transaktion inte att vänta tills den första transaktionen är klar.
  • Delade lås aktiveras under programsatsens körning och inaktiveras i slutet av tillståndet nt exekvering .
  • Exklusiva lås aktiveras under satskörningen och inaktiveras i slutet av transaktionen .

Läs Committed + read_committed_snapshot on
(ändra databas xxx ställ in read_committed_snapshot på)

  • Om data ändras i en transaktion, kommer valet av dessa data (i en annan transaktion eller utan en transaktion) inte att vänta tills den första transaktionen är avslutad, utan returnerar värden i det ögonblicket t av den transaktionsstart . Välj med den NOCHECK-tips kommer att returnera modifierad, men oengagerad data.
  • Om data läses i en transaktion kommer uppdateringar av denna data i en annan transaktion inte att vänta tills den första transaktionen är klar.
  • Delade lås används inte. Mekanismen för radversionering används istället – data för de uppdaterade posterna lagras i tempdb .
  • Exklusiva lås aktiveras under körning av uttalanden och är inaktiverade i slutet av transaktionen .

Repeterbar läsning

  • Om data ändras i en transaktion, kommer valet av dessa data (i annan transaktion eller utan en transaktion) att vänta tills den första transaktionen är klar. Välj med den NOLOCK-tips kommer att returnera modifierad, men oengagerad data.
  • Om data läses i en transaktion, kommer uppdateringar av denna data i en annan transaktion att vänta tills den första transaktionen är klar.
  • Delade lås aktiveras under satskörningen och inaktiveras i slutet av transaktionen , till skillnad från Read Committed.
  • Exklusiva lås aktiveras under satskörningen och inaktiveras i slutet av transaktionen .

Serialiserbar

  • Om data ändras i en transaktion, kommer valet av dessa data (i annan transaktion eller utan en transaktion) att vänta tills den första transaktionen är klar. Välj med den NOLOCK-tips kommer retur modifierad, men oengagerad data.
  • Om data läses i en transaktion, kommer uppdateringar av denna data i en annan transaktion att vänta tills den första transaktionen är klar.
  • Delade lås aktiveras under körningen av uttalandet och inaktiveras i slutet av transaktionen .
  • Exklusiva lås aktiveras under körningen av uttalandet och inaktiveras i slutet av transaktionen.
  • Exklusiva intervalllås aktiveras för nycklar som uppfyller frågekriterieintervallet. Insättningar av nya poster som faller inom detta intervall är inte tillåtna. Identiskt med inställningen den HOLDLO CK tips för alla SELECT i Läs Engagerad.

Ögonblicksbild
(ändra databasen xxx ställ in allow_snapshot_isolation på)

  • Om data ändras i en transaktion, kommer valet av dessa data (i annan transaktion eller utan en transaktion) inte att vänta tills den första transaktionen är klar. och returnerar värden för tillfället av den transaktionsstart . Välj med den NOLOCK-tips kommer retur modifierad, men oengagerad data.
  • Om data läses i en transaktion kommer uppdateringar av denna data i en annan transaktion inte att vänta tills den första transaktionen är klar.
  • Delade lås används inte. Mekanismen för radversionering används istället – data för de uppdaterade posterna lagras i tempdb .
  • Exklusiva lås aktiveras under körningen av uttalandet och inaktiveras i slutet av transaktionen.

Testad på MSSQL 2014.


  1. Låsa upp fördelarna med MariaDB:s Certified Associate Program

  2. Hur man hanterar MySQL-databaser, användare och tabeller från kommandoraden

  3. Ansluter till Lotus Notes från Java

  4. Escapende kontrolltecken i Oracle XDB