Transaktion

aus GlossarWiki, der Glossar-Datenbank der Fachhochschule Augsburg

Definition

Eine Transaktion wird dann benötigt, wenn man eine Gruppe von Statements entweder komplett, oder gar nicht ausführen möchte. Hierbei wird eine Menge der Datenbankänderungen zusammengefasst und als eine Gruppe ausgeführt. Wie z. B. eine Kontobuchung von einem Konto A auf ein Konto B. Erst wenn der Betrag von Konto A abgebucht wird und bei Konto B zugeht, ist die Transaktion beendet, ansonsten muss der Ausgangszustand der Datenbank wieder hergestellt werden.

Im Ablauf einer Transaktion wird als erstes die Konsistenz der Datenbank geprüft, danach werden die Daten tabellenweise geändert. In dieser Zeit kann sich die Datenbank kurzzeitig in einer inkonsistenten Lage befinden. Deshalb sollte eine Transaktion kurz gehalten werden.

Transaktionstypen

BEGIN TRANSACTION
Markiert den Ausgangspunkt einer expliziten Transaktion für eine Verbindung.

COMMIT TRANSACTION
Beendet eine Transaktion erfolgreich, wenn keine Fehler festgestellt wurden.

ROLLBACK TRANSACTION
Löscht eine Transaktion, in der Fehler festgestellt wurden. Alle durch die Transaktion geänderten Daten werden in den Ausgangszustand zurückversetzt.

Transaktionsarten

Autocommit
Jede einzelne Anweisung ist eine Transaktion.

Implizite Transaktion
Wenn eine vorhergehende Transaktion abgeschlossen ist, wird implizit eine neue Transaktion gestartet. Jede Transaktion wird jedoch explizit mit COMMIT oder ROLLBACK beendet.

Explizite Transaktion
Jede Transaktion wird explizit mit BEGIN TRANSACTION gestartet und explizit mit COMMIT oder ROLLBACK beendet.

ACID-Transaktionen

Alle guten DBMS unterstützen die ACID-Transaktionen.

A: Atomicity (Atomarizität)
Eine Transaktion wird komplett ausgeführt, oder überhaupt nicht.

C: Consitency (Konsistenz)
Eine Transaktion wird erst erfolgreich beendet, wenn weiterhin alle Integritätsbedingungen erfüllt sind.

I: Isolation
Eine Transaktion darf nur so ausgeführt werden, als ob sie allein ausgeführt werden würde. Alle anderen parallel laufende Transaktionen verändern das Ergebnis nicht. Es kann gleichzeitig auf die Daten zugegriffen werden, ohne dass es zu Inkonsistenzen kommt. Serialisierbarkeit wird immer garantiert.

D: Durability (Dauerhaftigkeit)
Die Ergebnisse einer erfolgreich beendeten Transaktion sind solange verfügbar, bis eine andere Transaktion Modifikationen vornimmt.


ACID-Transaktionen sollten kurz sein, da sonst evtl. bestimmte Ressourcen längerfristig nicht von anderen Transaktionen genutzt werden können.

Syntax

Wenn eine Operation nicht ausgeführt werden kann, dann werden die restlichen Aufträge der Transaktion rückgängig gemacht.

BEGIN TRANSACTION <Anweisung1> <Anweisung2> <Anweisung3> 
ROLLBACK TRANSACTION 

Wird die Transaktion vollständig ausgeführt, so erfolgt die Speicherung der Arbeit in Form einer Bestätigung durch COMMIT.

BEGIN TRANSACTION <Anweisung1> <Anweisung2> <Anweisung3>
COMMIT TRANSACTION 

Beispiel

BEGIN TRANSACTION 
CREATE TABLE person (id int, name varchar(50))
INSERT INTO person VALUES (1, 'Oliver Kahn');
COMMIT TRANSACTION

Quellen