Home

Isolatieniveaus

Isolatieniveaus zijn afspraken over de mate van isolatie tussen gelijktijdig uitgevoerde transacties in een database. Ze bepalen wanneer veranderingen zichtbaar worden voor anderen en welke anomalieën mogelijk zijn. Grotere isolatie betekent meer consistentie maar minder doorvoer.

De standaardniveaus volgens SQL zijn Read Uncommitted, Read Committed, Repeatable Read en Serializable. Sommige systemen bieden

De belangrijkste anomalieën die met isolatie samenhangen zijn dirty reads, non-repeatable reads en phantom reads. Dirty

Implementaties van isolatieniveaus maken gebruik van locking of multiversion concurrency control (MVCC). Locking houdt gedeelde of

In de praktijk kiezen organisaties het isolatieniveau op basis van workload en gewenste balans tussen consistentie

ook
Snapshot
Isolation
als
alternatief.
De
exacte
semantiek
kan
per
systeem
verschillen.
reads
ontstaan
als
een
transactie
data
leest
die
nog
niet
is
gecommitteerd
(mogelijk
bij
Read
Uncommitted).
Bij
Read
Committed
kunnen
non-repeatable
reads
en
phantom
reads
optreden:
een
tweede
leesactie
kan
een
rij
met
een
andere
waarde
opleveren
(non-repeatable
read)
of
een
query
andere
rijen
teruggeven
door
inserts
of
deletes
(phantom
reads).
Serializable
voorkomt
deze
anomalieën
door
volledig
seriële
uitvoering
van
transacties.
exclusieve
locks
vast
om
concurrentie
te
regelen;
MVCC
laat
meerdere
versies
van
gegevens
bestaan
zodat
lezers
niet
hoeven
te
wachten.
Snapshot
Isolation
is
een
MVCC-variant
die
bij
aanvang
van
de
transactie
een
consistente
momentopname
biedt
en
veel
leesproblemen
wegneemt,
maar
is
geen
volledige
vervanging
voor
serialisatie
en
kan
write
skew-achtige
anomalieën
toelaten.
en
performance.
Financiële
toepassingen
neigen
naar
Serializable,
terwijl
analytische
queries
of
operationele
systemen
vaak
volstaan
met
Read
Committed
of
Snapshot
Isolation.
Veel
DBMS’en
laten
isolatieniveau
per
transactie
instellen.