Erste Seite Zurück Weiter Letzte Seite Übersicht Grafik
Transaction Log
Wenn ein Fehler passiert (Stromausfall, Absturz der DB-Software, Absturz des OS) wird das DBMS irgendwann wieder gestartet und analysiert als 1. das Transaktionsprotokoll.
Folgende Fälle lassen sich unterscheiden:
komplette Transaktion im Log (BEGIN TRAN bis COMMIT), alle Befehle sind durch Checkpoints „abgehakt“ ==> ignroieren
komplette Transaktion im Log (BEGIN TRAN bis COMMIT), nicht alle Befehle sind durch Checkpoints „abgehakt“ ==> „rollforward“
Es befinden sich ein BEGIN TRAN, mglw. einige abgehakte Befehle, einige nicht abgehakte Befehle aber kein COMMIT im Log „rollback“
Notizen:
Folgende Fälle lassen sich unterscheiden:
Eine Transaktion ist von Begin Tran bis Commit Tran im Protokoll eingetragen und alle Befehle sind abgehakt: gar nichts ist zu tun ("inaktiver Teil" des Logs)
Es befinden sich ein Begin Tran, einige abgehakte Befehle und einige nicht abgehakte Befehle, aber kein Commit tran im Log: der Fehler trat also auf, während die Transaktion noch ins Log eingetragen wurde: das DBMS rollt die Transaktion zurück ("Rollback")
Es befinden sich ein Begin Tran, einige abgehakte Befehle, einige nicht abgehakte Befehle und ein nicht abgehaktes Commit Tran im Log: der Fehler trat auf, nachdem die Transaktion eingetragen wurde aber noch während der Abarbeitung vor Fertigstellung: Die Transaktion wird fertiggestellt ("vorgerollt", "Roll Forward")
Die Transaktion kann nicht im vorhinein komplett ins Log eingetragen und danach erst mit der Abarbeitung begonnen werden, da sich aufgrund der Dynamik des Programmflusses (If-Else, Schleifen etc.) völlig unvorhersagbare Verläufe ergeben.