Transaktionen

Was sind Transaktionen?

Als Transaktion wird in der Informatik ganz allgemein eine Abfolge von Teilaktionen bezeichnet, die entweder fehlerfrei und vollständig oder gar nicht durchgeführt wird. Auf Datenbanken bezogen werden die Teilaktionen auf Tabellen ausgeführt. Tritt bei einer Teilaktion einer Transaktion ein Fehler auf, muss die Transaktion abgebrochen und alle bisherigen Änderungen rückgängig gemacht werden (Rollback). Erst nachdem alle Teilaktionen fehlerfrei durchlaufen wurden, wird die Transaktion dauerhaft abgeschlossen (Commit). Transaktionen verhindern, dass in Datenbanken ein inkonsistenter Zustand entsteht, selbst wenn bei der Durchführung von Teilaktionen Fehler auftreten.

ACID-Eigenschaften

In der Informatik werden vier Eigenschaften definiert, die Transaktionen haben müssen. Aus den Anfangsbuchstaben der vier Eigenschaften entstand das Akronym ACID:

Atomicity (Atomarität)

Eine Transaktion wird entweder vollständig oder gar nicht ausgeführt. Wird eine Transaktion abgebrochen, wird das System (eine Datenbank) in den vorherigen Zustand zurückgesetzt.

Consistency (Konsistenz)

Ist ein System (eine Datenbank) in einem konsistentem Zustand, muss das System nach der Transaktion auch in einem konsistentem Zustand sein.

Isolation (Isolation)

Bei der gleichzeitigen Durchführung von mehreren Transaktionen, müssen die einzelnen Transaktionen unabhängig voneinander (isoliert) abgearbeitet werden und dürfen sich nicht gegenseitig beeinflussen.

Durability (Dauerhaftigkeit)

Das Ergebnis einer Transaktion muss dauerhaft erhalten bleiben und darf nicht durch andere Transaktionen verloren gehen. Damit sind auch verschachtelte Transaktionen nicht erlaubt, da ein Rollback der äußeren Transaktion das Ergebnis einer bereits abgeschlossenen inneren Transaktion ungültig machen würde.

Aufbau von Transaktionen

Transaktionen laufen nach dem Prinzip „starten, übermitteln oder zurückrollen“ ab. Als erstes wird die Transaktion mit „START TRANSACTION“ begonnen. Dann folgen die verschiedenen SQL-Anweisungen. Konnten alle SQL-Anweisungen fehlerfrei ausgeführt werden, werden sie mit „COMMIT“ dauerhaft in die Datenbank geschrieben, ansonsten mit „ROLLBACK“ wieder zurückgesetzt.

Bei MySQL werden SQL-Anweisungen standardmäßig direkt in die Datenbank geschrieben. Werden mehrere SQL-Anweisungen blockweise ausgeführt und tritt bei einer SQL-Anweisung ein Fehler auf, so bleiben alle vorherigen SQL-Anweisungen gültig. Werden SQL-Anweisungen aber zwischen den Anweisungen „START TRNSACTION“ und „COMMIT“ ausgeführt, werden sie erst nach „COMMIT“ fest in die Datenbank geschrieben:

Tritt ein Fehler bei einer SQL-Anweisung innerhalb einer Transaktion auf, können alle SQL-Anweisungen nach „START TRANSACTION“ mit „ROLLBACK“ wieder zurückgesetzt werden:

Quellen