Historie (Transaction Schedule)
Eine Historie ist eine sequenzielle Anordnung aller Aktionen (read, write, commit, abort) von einer oder mehreren Transaktionen. Sie enthaelt alle Aktionen jeder beteiligten Transaktion, wobei die Reihenfolge innerhalb einer Transaktion erhalten bleibt. Aktionen verschiedener Transaktionen koennen verzahnt (interleaved) sein.
Merke: Historie = Reihenfolge aller Operationen aller Transaktionen, verzahnt aber intern konsistent.
Serielle Historie
Transaktionen werden strikt hintereinander ausgefuehrt: erst T1 komplett, dann T2, dann T3. Keine Verzahnung. Immer korrekt, aber schlecht fuer die Performance. Seriell dient als Referenzmodell fuer die Korrektheit paralleler Ausfuehrungen.
Merke: Seriell = Transaktionen laufen sequentiell hintereinander, nie verzahnt.
Serialisierbare Historie
Eine Historie H ist serialisierbar, wenn sie zu einer seriellen Historie aequivalent ist, also das gleiche Endergebnis in der Datenbank liefert. Ziel des DBMS: verzahnte Ausfuehrung erlauben, aber nur wenn Serialisierbarkeit gewaehrleistet ist. Korrekt = serialisierbar.
Merke: Verzahnt darf sein, solange das Ergebnis wie bei serieller Ausfuehrung ist.
Konflikt zwischen Operationen
Zwei Operationen stehen in Konflikt, wenn sie dasselbe Datenobjekt betreffen UND mindestens eine ein write ist. Konfliktarten: r/w, w/r, w/w. read/read ist KEIN Konflikt. Das write allein macht den Konflikt aus.
Merke: Gleiches Objekt + mindestens ein write. r/r ist harmlos.
Konfliktaequivalenz
Zwei Historien sind konfliktaequivalent, wenn sie die Konfliktoperationen der nicht-abgebrochenen Transaktionen in derselben Reihenfolge ausfuehren. Nicht-konfligierende Operationen duerfen umsortiert werden.
Merke: Gleiche Reihenfolge aller Konfliktpaare, egal wie der Rest sortiert ist.
Konflikt-Serialisierbarkeit
Eine Historie H ist konfliktserialisierbar, wenn sie konfliktaequivalent zu einer seriellen Historie ist. Man kann die verzahnte Historie durch Vertauschen unabhaengiger Operationen in eine serielle Form ueberfuehren. Strenger als Ergebnis-Aequivalenz, aber effizient testbar.
Merke: Konflikte in seriell umsortierbar ohne Reihenfolgeverletzung.
Praezedenzgraph SG(H)
Gerichteter Graph. Knoten sind die Transaktionen T1, ..., Tn. Fuer jedes Konfliktpaar p_i(X) vor q_j(X) mit i != j wird eine Kante T_i -> T_j eingezeichnet. Verdichtet die Konfliktbeziehung auf Transaktionsebene.
Merke: Knoten pro Transaktion, Kante T_i->T_j bei Konflikt von T_i vor T_j.
Serialisierbarkeitstheorem
Eine Historie H ist konfliktserialisierbar genau dann, wenn ihr Serialisierbarkeitsgraph SG(H) azyklisch ist. Ein Zyklus bedeutet widerspruechliche Reihenfolgeanforderungen. Topologische Sortierung des azyklischen Graphen liefert die aequivalente serielle Reihenfolge.
Merke: Azyklisch = serialisierbar. Zyklus = nicht serialisierbar.