Home

isolationsnivåer

Isolationsnivåer er mekanismer i databaser som styrer hvordan transaksjoner som kjøres samtidig påvirker hverandre og synligheten av data. De definerer hvilke anomalier som kan forekomme, og gir et handel mellom konsistens og ytelse.

Read uncommitted tillater lesing av ubekreftede endringer fra andre transaksjoner. Dette innebærer dirty reads og kan

Read committed hindrer dirty reads ved at en transaksjon kun leser data som er committed før spørringen

Repeatable read sikrer at hvis en rad leses to ganger i samme transaksjon, vil den ha samme

Serializable er det strengeste isolasjonsnivået: transaksjoner oppfører seg som om de ble kjørt sekvensielt. Det forhindrer

Snapshot isolation er i noen systemer et alternativ: transaksjoner leser en konsistent versjon av data som

gi
midlertidige
eller
inkonklusive
resultater.
Fordelen
er
lavere
ventetid
og
bedre
gjennomstrømning,
men
på
bekostning
av
datakonsistens.
starter.
Dette
gir
mer
konsistente
lesninger,
men
verdier
kan
endre
seg
mellom
påfølgende
lesninger
i
samme
transaksjon
(non-repeatable
reads)
og
phantom
reads
kan
forekomme
ved
visse
søk.
verdier.
Dette
hindrer
non-repeatable
reads,
men
phantom
reads
kan
fortsatt
forekomme
i
scenarier
der
nye
rader
settes
inn
eller
endres
etter
første
lesning.
Dette
nivået
balanserer
konsistens
og
ytelse
gjennom
lås-
eller
versjoneringsmekanismer.
dirty
reads,
non-repeatable
reads
og
phantom
reads,
men
kan
redusere
ytelsen
og
øke
risikoen
for
døde
låser
og
venting.
Implementasjoner
bruker
ofte
låsing
eller
tidsstempler
for
å
sikre
serialisering.
eksisterte
ved
transaksjonsstart.
Dette
hindrer
dirty
og
non-repeatable
reads,
men
phantom
reads
kan
forekomme,
og
det
kan
oppstå
write
skew
i
visse
tilfeller.