Kapittel 8 · Forelesning 14–16 · Del 2

Transaksjoner — ACID i praksis

Hvordan databasen gir alt-eller-ingenting selv når mange brukere kjører samtidig og strømmen plutselig går.

Bratsbergs notater 15–18 Forelesning 14–16 transaksjoner.pdf
01 · Motivasjon

Hvorfor finnes transaksjoner?

Tenk deg en bankoverføring: «trekk 100 kr fra konto A, sett 100 kr inn på konto B». To skriveoperasjoner. Hvis maskinen krasjer mellom dem, har banken nettopp slettet 100 kr av kundens penger — og 100 kr fra balansen. To samtidige overføringer kan også havne i klinsj og ende i tull selv uten krasj.

Bankoverføring uten transaksjon — krasj mellom de to skrivene tid → step 1 A := A - 100 A: 500 → 400 KRASJ! strøm går step 2 ✗ B := B + 100 aldri kjørt UTEN TRANSAKSJON Konto A: 400 kr Konto B: 100 kr → 100 kr forsvunnet Inkonsistent tilstand! MED TRANSAKSJON Konto A: 500 kr Konto B: 100 kr → rullet tilbake (UNDO) Konsistent — som om ingenting skjedde
Hele kapittel 8 finnes for å gjøre venstre kolonne umulig. Mekanismene heter ACID — og resten av kapittelet viser hvordan.

En transaksjon er en logisk arbeidsenhet som binder slike steg sammen. Databasen lover fire ting — kjent som ACID:

A

Atomicity

Alt eller ingenting — enten gjøres alle stegene, eller ingen.

løses i 8C
C

Consistency

Integritetskrav (PK, FK, CHECK) holder før og etter hver commit.

tverrgående
I

Isolation

To samtidige transaksjoner skal ikke se hverandre halvferdige.

løses i 8B
D

Durability

Etter commit overlever resultatet enhver krasj.

løses i 8C
02 · Helhetsbilde

Kartet over alt som skjer

Tre hovedmekanismer jobber sammen i bakgrunnen hver gang du skriver BEGIN; … COMMIT;. Hver av dem garanterer én eller flere bokstaver i ACID:

Applikasjon BEGIN / COMMIT Transaction Manager tildeler TxID, koordinerer Scheduler · Lock Manager låser og samtidighet (8B) Garanterer Isolation Recovery Manager logg + krasjsikring (8C) Garanterer Atomicity + Durability Buffer Pool sider i RAM Database-disk (sider) Logg-disk (LSN-er)
De tre delene av kapittelet henger på samme arkitektur: scheduler/lock manager (begreper som 2PL og MVCC forklares i 8B) håndterer Isolation, mens recovery manager (med WAL og ARIES, forklart i 8C) sammen med loggen sikrer Atomicity og Durability.
3 undersider · 8A · 8B · 8C
A I D tre ACID-bokstaver løses
2PL låser → Isolation
WAL logg → Atomicity + Durability
Mental modell

Tenk på lock manager som en trafikkdirigent (ingen kjører over hverandre — Isolation), og recovery manager + logg som en flyboksopptaker (vi kan alltid spole frem committed arbeid og spole tilbake løse arbeid — Atomicity + Durability). De jobber uavhengig, men deler buffer pool og disk.

03 · Reisen gjennom kapittelet

Én transaksjon — tre kapittel-deler

Hver del av kapittelet adresserer ett trinn i transaksjonens liv. Følg pilen: 8A gir vokabularet, 8B viser hva som kan gå galt under samtidighet og hvordan låser fikser det, 8C viser hva som skjer når strømmen går.

Transaksjonens livsløp og hvor i kapittelet hver del dekkes livsløp → BEGIN read/write krasj? COMMIT 8A · TEORI «Hva er en transaksjon?» • schedule (r/w/c/a) • konflikt & serialiserbarhet • presedensgraf • recoverable / strict 8B · ISOLATION «Hva med to samtidig?» • anomalier (lost upd, …) • S/X-låser, 2PL, varianter • deadlock + granularitet • MVCC, isolation levels 8C · RECOVERY «Hva om strømmen går?» • logg + LSN, WAL-regelen • force/steal, CLR • ARIES: analysis/redo/undo • sjekkpunkter HVEM GARANTERER HVA A · Atomicity recovery + logg → 8C C · Consistency applikasjon + DB tverrgående I · Isolation låser / MVCC → 8B D · Durability WAL + flush → 8C
Transaksjonens livsløp på toppen, kapittel-delene under, ACID-bokstavene nederst. Følg en pil — du leser kapittelet i rekkefølge når du følger livsløpet.
Slides og kompendium

Hovedkilde: transaksjoner.pdf + Bratsbergs kompendium kap. 15–18. Underkapitlene er lese-stier med figurer og quizzer underveis — ikke bare summert til slutt.

05 · Vokabular

Begrepene du møter igjen

Disse går igjen i alle tre delene. Trenger du å slå dem opp senere — det er her.

BegrepForkortetHva det betyr
TransaksjonTiAtomisk arbeidsenhet — ender med commit eller abort.
Schedule (historie)HSekvens av r/w/c/a-operasjoner fra flere transaksjoner.
ConflictTo operasjoner på samme dataelement, ulike transaksjoner, minst én er write.
SerializableSchedule har samme effekt som en eller annen seriell rekkefølge.
Two-phase locking2PLFørst alle låser, så ingen flere — garanterer conflict-serializability.
MVCCMulti-version. Reads ser snapshot, writes lager ny versjon.
Log Sequence NumberLSNMonotont voksende ID på log-record. Også per side (PageLSN).
WAL-regelLoggen må på disk før dataen.
Compensating Log RecordCLR«Undo som er en redo» — gjør tilbakerulling idempotent.
Dirty Page TableDPTSider som har endringer i buffer som ikke er på disk.
06 · Forhåndssjekk

Sjekk hva du allerede har med deg

Tre raske spørsmål før du dykker inn. Du finner full forklaring i underkapitlene.

Forhåndssjekk 1 · Lett
Hvilken bokstav i ACID handler om at ingen andre transaksjoner skal se en halvferdig endring?
AAtomicity — alt eller ingenting
CConsistency — integritetskrav holder
IIsolation — det ser ut som om transaksjonen er alene
DDurability — endringene overlever krasj
Riktig — Isolation. Det er Isolation som styrer at samtidige transaksjoner ikke skal forstyrre hverandre. Atomicity handler om alt-eller-ingenting innad i én transaksjon, og Durability handler om hva som overlever krasj.
Forhåndssjekk 2 · Middels
Hva er hovedgrunnen til at vi ikke bare kjører transaksjoner serielt etter hverandre?
ASQL-standarden forbyr det
BVi taper massiv ytelse — moderne maskiner og I/O-venting krever samtidighet
CDet bryter med ACID
DDet er umulig å implementere
Riktig — ytelse. Serielle schedules er helt korrekte, men sløser CPU og I/O. Mens én transaksjon venter på disk kan andre kjøre. Hele triksen er å la flere kjøre samtidig og bevise at resultatet er det samme som en eller annen seriell rekkefølge.
Forhåndssjekk 3 · Vanskelig
Hvilken komponent garanterer Atomicity og Durability når strømmen plutselig går?
ALock manager (2PL)
BRecovery manager + loggen, via WAL og undo/redo
CBuffer-pool — sidene er der allerede
DSQL-kompilatoren — den vet hva som skal kjøres
Riktig — recovery + logg. Lock manager har ansvar for Isolation, ikke kraschsikkerhet. Buffer-pool (sider midlertidig holdt i RAM) forsvinner ved strømbrudd. Recovery manager bruker loggposter på disk (etter WAL-regelen: logg på disk før dataen — forklares i 8C) til å rulle frem committed transaksjoner og rulle tilbake løse etter krasj.

Klar? Begynn med 8A · Intro og teori.