50 likes | 166 Views
Rücksetzen. Bisher betrachtetes Scheduling gewährleistet Isolation, d.h. Serialisierbarkeit, setzt jedoch voraus, dass Transaktionen abgebrochen und rückgesetzt werden können.
E N D
Rücksetzen • Bisher betrachtetes Scheduling gewährleistet Isolation, d.h. Serialisierbarkeit, setzt jedoch voraus, dass Transaktionen abgebrochen und rückgesetzt werden können. • Jetzt zu betrachten: Rücksetzmechanismen, die gewährleisten, dass nicht erfolgreiche Transaktionen keinerlei Effekte bewirken (Atomizität). • Mögliche Gründe für Transaktionsabbruch: • Selbstaufgabe (Ausführung von abort-Operation), • Systembedingter Abbruch (z.B. wegen Verklemmung, Ressourcenmangel, I/O-Fehler), • Systemzusammenbruch mit Verlust des Hauptspeicherinhalts.
Rücksetzbarkeit von Schedules (1) • Rücksetzen einer Transaktion Ti kann andere Transaktion Tj beeinflussen, die bereits von Ti gelesen hat und deshalb nun ebenfalls rückgesetzt werden muss. • Zur Erinnerung: Konfliktserialisierbarer (fast serieller) Schedule S4: r2(B) r2(T) w2(T) w2(B) r1(B) r1(T) a2c1. • CP(S4): Nur T1! Da aber T1 Wert B (und T) von T2 gelesen hat (dirty read), kann Atomizität von T1 nur durch Rücksetzen von T1 erreicht werden. • Vorgang ist als kaskadierendes Rücksetzen bekannt — unerwünscht, da Arbeit von T1 verloren geht.
Rücksetzbarkeit von Schedules (2) a3 • Betrachte konfliktserialisierbaren (fast seriellen) Schedule S10: r3(T) w3(T) r3(B) w3(B) r2(B) r2(T) w2(T) w2(B) c2c3. • Rücksetzen von T3 fatal, da wegen dirty read auch T2 rückzusetzen wäre, dies aber die Dauerhaftigkeit von T2 verletzen würde. • Folgerung: Für Zwecke der Rücksetzbarkeit muss Menge der zulässigen Schedules über Serialisierbarkeit hinaus eingeschränkt werden. • Zum Vergleich: Kaskadierendes Rücksetzen S10: r3(T) w3(T) r3(B) w3(B) r2(B) r2(T) w2(T) w2(B) c3c2. a3
Rücksetzbarkeit von Schedules (3) • Definition: Sei S Schedule. • S heißt rücksetzbar (wiederanlaufbar), wenn für alle Transaktionen Ti, Tj mit i j gilt: wenn Tj irgendein Datenelement x von Ti liest und S den Aufruf cj enthält, dann enthält S auch ci, und ci erfolgt vor cj. • Svermeidetkaskadierendes Rücksetzen, wenn für alle Transaktionen Ti, Tj mit i j gilt: wenn Tj irgendein Datenelement x von Ti liest, dann erfolgt zwischen wi(x) und rj(x) ein Aufruf vonci. • Zur Erinnerung: S heißt rigoros, wenn für alle Transaktionen Ti, Tj in CP(S) mit i j gilt: wenn oi(x) vor oj(x) in S und oi(x) unverträglich mit oj(x), dann erfolgtci vor oj(x). • Rigorose Schedules vermeiden kaskadierendes Rücksetzen und sind konfliktserialisierbar. • S2PL löst Isolation und Atomizität.
Transaktionszustände abge- schlossen wieder- holbar festschreiben beenden verdrängen potentiell aktiv blockiert inkarnieren abbrechen einbringen abbrechen abbrechen neustarten wieder- anlaufbar geschei- tert auf- gegeben undo undo