Timestamp Ordering

Die grundlegende Idee des Timestamp Ordering Verfahrens ist es, den seriellen Schedule festzulegen, zu dem der mit dem Verfahren generierte Schedule konflikt-serialisierbar (siehe Konflikt-Äquivalenz) sein soll.

Man wählt als zugrundeliegenden seriellen Schedule den Schedule, der sich durch die Startreihenfolge der Transaktionen ergibt. Das Timestamp Ordering Verfahren stellt dann sicher, daß Transaktionen, die "unmögliche" Aktionen durchführen abgebrochen und neugestartet werden.

Unmögliche Aktionen können auftreten, wenn

• eine Transaktion einen Wert aus ihrer Zukunft liest oder
• eine Transaktion einen Wert überschreiben will, der in ihrer Zukunft bereits gelesen wurde.

Um diese Bedingungen effizient zu überprüfen, erhalten die Transaktionen aufsteigende Timestamps (Zeitstempel) TS(T). Auch die Datenobjekte werden mit Timestamps versehen, einem Read-Timestamp TSread(X) und einem Write-Timestamp TSwrite(X).

Wenn die Transaktion T das Datenobjekt X lesen will, wird überprüft, ob

TSwrite(X) > TS(T)

gilt. In diesem Fall will die Transaktion T einen Wert lesen, der erst in T's Zukunft geschrieben wird, deshalb wird T abgebrochen und neugestartet. Anderenfalls wird die Leseaktion durchgeführt und TSread(X) wird das Maximum von TSread(X) und TS(T) zugewiesen.

Wenn eine Transaktion T das Datenobjekt X schreibend verändern will, wird T abgebrochen, wenn

TSread(X) > TS(T) oderTSwrite(X) > TS(T)

gilt, also eine spätere Transaktion X bereits gelesen oder geschrieben hat. Falls beide Bedingungen nicht zutreffen, wird die Schreibaktion ausgeführt und TSwrite(X) wird der Wert TS(T) zugeweisen.

Das Timestamp Ordering Verfahren bricht Transaktionen ab, die eine Aktion durchführen wollen, die eine Kante im Konfliktgraphen (siehe Konflikt-Äquivalenz) in verkehter Richtung erzeugen würden. Als verkehrte Richtung gilt eine in die Vergangenheit gerichtete Kante.