Transaktion

Als Transaktion werden eine Gruppe von logisch zusammenhängenden Datenbankoperationen wie beispielsweise SQL-Anweisungen bezeichnet. Bei der Ausführung einer Transaktion wird die Einhaltung der vier grundlegenden Eigenschaften Atomarität (Atomicity), Konsistenz (Consistency), Isolation (Isolation) und Dauerhaftigkeit (Durability) garantiert, die auch als ACID-Paradigmen bezeichnet werden. Um die Konsistenz von Daten in Datenbanken zu gewährleisten, verwenden die meisten Systeme eine Transaktionsverwaltung, die auch aus mehreren Transaktionen eine Historie zusammenstellt.


Transaktionen werden meist in Zusammenhang mit Datenbanken verwendet und definieren eine Folge von Operationen (Instruktionen), die eine logische Einheit darstellen. Sollte auf Grund eines Fehlers - Kommunikationsfehler, Zugriffsverletzung oder ähnliches - eine der Operationen nicht ausgeführt werden können, so wird die Transaktion zunächst abgebrochen, keine der Operationen ausgeführt und der Datenbestand in den Ausgangszustand zurückversetzt, was mit Rollback bezeichnet wird.

Struktur einer Transaktion

Struktur einer Transaktion

Bei der Ausführung einer Transaktion - die aus einer oder mehreren Operationen bestehen kann - garantiert ein Datenbanksystem die Beachtung der vier grundlegenden ACID-Eigenschaften:

Atomarität. Eine Transaktion wird entweder vollständig ausgeführt oder gar nicht. Alle bisherigen Aktionen werden rückgängig gemacht, wenn während der Transaktion ein beliebiger Fehler auftritt.

Konsistenz. Die Datenbank befindet sich in einem konsistenten Zustand, wenn die Transaktion abgeschlossen ist. Die logische Konsistenz wird dabei durch die definierten Integritätsbedingungen (Schlüsseleigenschaften, Wertebereiche, Fremdschlüssel etc.) gesichert. Sofern die Integritätsbedingungen verletzt werden, führt das zwangsläufig zum Zurücksetzen der Transaktion. Während einer Ausführung auftretende inkonsistente Zustände werden mit weiteren Operationen wieder korrigiert. Dies bezeichnet man auch mit "verzögerten Integritätsbedingungen", die zumeist erst am Ende einer Transaktion überprüft werden. Ein Beispiel dafür sind die Operationen bei der Umbuchung eines Kontos

Isolation. Mehrere gleichzeitig ablaufende Transaktionen beeinflussen sich nicht gegenseitig, da Transaktionen isoliert ablaufen. Da dieses grundlegend für die Konsistenz einer Datenbank ist, koordiniert ein Datenbankmanagementsystem diesbezügliche Mechanismen zur Synchronisierung der Transaktionen.

Dauerhaftigkeit. Dies wird auch als Persistenz bezeichnet, und bedeutet, dass eine erfolgreiche Transaktion dauerhaft ist. Dabei wird wiederum durch eine entsprechende Verwaltung sichergestellt, dass die Auswirkungen einer Transaktion im Datenbestand auf Dauer bestehen bleiben.

Die Parallelität von Transaktionen werden in sogenannten "Grade" differenziert, und durch den Transaction Isolation Level gesteuert. Dabei können umso weniger Probleme hinsichtlich der Konsistenz von Daten auftreten, je höher der Level gewählt wird. Daneben ist aber auch zu beachten, dass je höher die Ebene der Isolation gewählt wird, desto geringer der Durchsatz bei einer großen Zahl gleichzeitiger Zugriffe ist. Das resultiert aus dem zeitweiligen Sperren des Datensatzes. Als Beispiel sei hier nachfolgend der SQL2-Standard genannt, der vier Transaction Isolation Levels definiert:

Ebene 0 - READ UNCOMMITTED: Von der betreffenden Transaktion werden keinerlei Sperren der Datensätze realisiert. Mittels einer anderen Transaktion kann auf Daten zugegriffen werden, die von einer anderen Transaktion parallel geschrieben werden. Es können dabei neue und veraltete Daten gelesen werden - das wird auch als dirty read bezeichnet.

Ebene 1 - READ COMMITTED: Von einer Transaktion modifizierte Datensätze werden beim Schreiben gesperrt, beim Lesen sind sie weiter allgemein verfügbar. Dabei kann das Problem des inkonsistenten Lesens auftreten.

Ebene 2 - REPEATABLE READ: Es werden alle Datensätze gesperrt, die von einer Transaktion gelesen oder geschrieben werden.

Ebene 3 - SERIALIZE: Hier ist die vollständige Serialisierbarkeit der entsprechenden Datensätze gegeben. Damit sind in einer Transaktion gelesene Daten bis zum Ende einer Trans-aktion gültig.

Beispiel SQL-Transaktion:

SET TRANSACTION READ WRITE WAIT;

UPDATE lager_1 SET preis = preis * 0.65 WHERE stueck < 125;

UPDATE lager_2 SET preis = preis * 1.2;

COMMIT;

Dabei werden aber nicht von jedem Datenbanksystem alle Transaktions-Level gleichermaßen unterstützt. Die Reihenfolge der Operationen innerhalb einer Transaktion darf nicht geändert werden, da diese geordnet sind und Nebenläufigkeit von Operationen unterstützen.

Werden Transaktionen in unterschiedliche Teile aufgespalten und in verteilten Systemen ausgeführt, spricht man von verteilten Transaktionen. Dazu werden entsprechende COMMIT-Protokolle verwendet, um die Atomarität verteilter Transaktionen zu garantieren. Werden die Auswirkungen einer Transaktion wieder zurückgenommen, so wird diese Funktion als Rollback bezeichnet. Sofern eine Transaktion aufgrund einer anderen Transaktion nicht durchführbar ist, nennt man dies eine Blockierung. Und sofern sich die Transaktionen gegenseitig eliminieren, kommt es gar zu einer Verklemmung ( Deadlock). Transaktionen werden als wirkungslos gekennzeichnet, wenn sie keinen Einfluss auf den Datenbestand haben.

Informationen zum Artikel
Deutsch: Transaktion
Englisch: transaction - TRX
Veröffentlicht: 16.03.2015
Wörter: 710
Tags: #Datenbanken
Links: ACID (atomicity, consistency, isolation, durability), Daten, Datenbank, Datendurchsatz, Datensatz