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

Tips til læse-/skrivelåse afhængigt af transaktionsisolationsniveau i MSSQL

Læs ikke-forpligtet

  • Hvis data bliver ændret i en transaktion, vil valg af disse data (i anden transaktion eller uden en transaktion) ikke vente, indtil den første transaktion er afsluttet, og vil returnere dataindtastninger af ikke-forpligtede transaktioner.
  • Hvis data læses i en transaktion, vil opdateringer af disse data i en anden transaktion ikke vente, indtil den første transaktion er afsluttet.
  • Delte låse bruges ikke. Identisk med indstilling t han NOLOCK tip til alle valg i Læs forpligtet.
  • Eksklusive låse er aktiveret under udførelse af sætningen og deaktiveret ved slutningen af af transaktion .

Læs Committed + read_committed_snapshot fra
(ændre database xxx slå read_committed_snapshot fra)

  • Hvis data ændres i en transaktion, vil valg af disse data (i anden transaktion eller uden en transaktion) vente, indtil den første transaktion er afsluttet. Vælg ct med den NOCHECK tip vil returnere ændrede, men ikke-forpligtede data.
  • Hvis data læses i en transaktion, vil opdateringer af disse data i en anden transaktion ikke vente, indtil den første transaktion er afsluttet.
  • Delte låse aktiveres under udførelse af sætningen og deaktiveres ved slutningen af ​​tilstanden nt udførelse .
  • Eksklusive låse aktiveres under udførelse af erklæringen og deaktiveres ved slutningen af ​​transaktionen .

Læs Committed + read_committed_snapshot on
(ændre database xxx sæt read_committed_snapshot til)

  • Hvis data bliver ændret i en transaktion, vil valg af disse data (i anden transaktion eller uden en transaktion) ikke vente, indtil den første transaktion er afsluttet, og vil returnere værdier i øjeblikket t af den transaktionsstart . Vælg med den NOCHECK tip returnerer ændrede, men ikke-forpligtede data.
  • Hvis data læses i en transaktion, vil opdateringer af disse data i en anden transaktion ikke vente, indtil den første transaktion er afsluttet.
  • Delte låse bruges ikke. Rækkeversionsmekanismen bruges i stedet – data for de opdaterede poster gemmes i tempdb .
  • Eksklusive låse aktiveres under udførelse af erklæringen og er deaktiveret ved slutningen af ​​transaktionen .

Gentagelig læsning

  • Hvis data ændres i en transaktion, vil valg af disse data (i anden transaktion eller uden en transaktion) vente, indtil den første transaktion er afsluttet. Vælg med den NOLOCK-tip returnerer ændrede, men ikke-forpligtede data.
  • Hvis data læses i en transaktion, vil opdateringer af disse data i en anden transaktion vente, indtil den første transaktion er afsluttet.
  • Delte låse aktiveres under udførelse af erklæringen og deaktiveres ved transaktionens afslutning , i modsætning til Read Committed.
  • Eksklusive låse aktiveres under udførelse af erklæringen og deaktiveres ved slutningen af ​​transaktionen .

Serialiserbar

  • Hvis data bliver ændret i en transaktion, vil valg af disse data (i anden transaktion eller uden en transaktion) vente, indtil den første transaktion er afsluttet. Vælg med den NOLOCK tip vil returner ændrede, men ikke-forpligtede data.
  • Hvis data læses i en transaktion, vil opdateringer af disse data i en anden transaktion vente, indtil den første transaktion er afsluttet.
  • Delte låse er aktiveret under udførelse af erklæringen og deaktiveret ved slutningen af ​​transaktionen .
  • Eksklusive låse aktiveres under udførelse af erklæringen og deaktiveres ved slutningen af ​​transaktionen.
  • Eksklusive rækkeviddelåse aktiveres for nøgler, der opfylder forespørgselskriterierne. Indsættelse af nye poster, der falder inden for dette område, er ikke tilladt. Identisk med indstilling den HOLDLO CK tip for alle SELECT i Læs Committed.

Øjebliksbillede
(ændre database xxx sæt allow_snapshot_isolation til)

  • Hvis data ændres i en transaktion, vil valg af disse data (i anden transaktion eller uden en transaktion) ikke vente, indtil den første transaktion er afsluttet. og returnerer værdier i øjeblikket af den transaktionsstart . Vælg med den NOLOCK tip vil returner ændrede, men ikke-forpligtede data.
  • Hvis data læses i en transaktion, vil opdateringer af disse data i en anden transaktion ikke vente, indtil den første transaktion er afsluttet.
  • Delte låse bruges ikke. Rækkeversionsmekanismen bruges i stedet – data for de opdaterede poster gemmes i tempdb .
  • Eksklusive låse aktiveres under udførelse af erklæringen og deaktiveres ved slutningen af ​​transaktionen.

Testet på MSSQL 2014.


  1. Kan ikke oprette en forekomst af OLE DB-udbyderfejl som Windows-godkendelsesbruger

  2. Vigtigheden af ​​at vedligeholde en HIPAA-kompatibel database

  3. Kontrollerer oracle-side og databasenavn

  4. Tjek den plads, der bruges af en tabel i SQL Server