Transaktion

Bei einer Transaktion handelt es sich um eine logische Verarbeitungseinheit.

Eine Transaktion startet mit der Aktion begin transaction, um anzuzeigen, daß die Verarbeitung beginnt. Die Transaktion tritt nun in den aktiven Zustand ein und kann eine Reihe von read und write Aktionen durchführen. Die Transaktion signalisiert mit end transaction, daß die Folge von Datenzugriffsaktionen abgeschlossen ist. Falls die Transaktion ihre Tätigkeit erfolglos abbrechen will, führt sie die Aktion abort durch. Damit werden alle vorangehenden Aktionen der Transaktion ungeschehen gemacht.

Für Transaktionen gelten die folgenden sogenannten ACID-Eigenschaften:

• atomicity - eine Transaktion wird entweder vollständig ausgeführt, oder überhaupt nicht ausgeführt;
• consistency preservation - die Transaktion führt von einem konsistenten Zustand der Datenbank zu einem anderen konsistenen Zustand;
• isolation - Transaktionen sind keine Daten sichtbar, die von anderen Transaktionen geschrieben wurden, wenn diese nicht den commit-Zustand erreichen;
• durability bzw. permanency - wenn eine Transaktion den Zustand der Datenbank geändert hat und in den commit-Zustand eingetreten ist, dürfen die Änderungen nicht aufgrund eines später auftretenden Fehlers verloren gehen.


Im Bezug auf die Abbildung ist also festzustellen:

Wenn die Transaktion im partially commit-Zustand ist, wird überprüft, ob die gemachten Änderungen die Datenbank in einen gültigen Zustand versetzten. Wenn nein, geht die Transaktion in den failed-Zustand über. Im anderen Fall geht die Transaktion in den commit-Zustand über.

Wenn eine Transaktion in den failed-Zustand gerät, werden alle write-Aktionen ungeschehen gemacht.

Wenn eine Transaktion in den commit-Zustand gelangt, muß der neue Zustand der Datenbank auf ein permanentes Speichermedium gesichert werden.

Die ACID-Eigenschaften lassen sich durch Concurrency Control und Recovery realisieren.


Anlage

Abbildung: Die Zustände einer Transaktion.