Transaktionen und das ACID-Prinzip
Kurzantwort
Eine Transaktion fasst mehrere Datenbankoperationen zu einer Einheit zusammen, die entweder ganz oder gar nicht ausgeführt wird. Die vier ACID-Eigenschaften sichern das ab: Atomarität (ganz oder gar nicht), Konsistenz (nur gültige Zustände), Isolation (Transaktionen stören sich nicht) und Dauerhaftigkeit (bestätigte Änderungen bleiben erhalten).
Teil des Lernpfads Datenbanken und SQL · Schritt 7 von 9
Eine Überweisung besteht aus zwei Schritten: beim einen Konto abbuchen, beim anderen gutschreiben. Was passiert, wenn nach dem Abbuchen der Strom ausfällt? Genau dieses Problem lösen Transaktionen – und das ACID-Prinzip garantiert, dass Daten nie in einem halben Zustand hängenbleiben.
Was ist eine Transaktion?
Eine Transaktion bündelt mehrere Operationen zu einer unteilbaren Einheit. Entweder werden alle ausgeführt oder keine.
BEGIN;
UPDATE konto SET saldo = saldo - 100 WHERE id = 1;
UPDATE konto SET saldo = saldo + 100 WHERE id = 2;
COMMIT; -- bestätigt beide Schritte gemeinsamDie vier ACID-Eigenschaften
| Buchstabe | Eigenschaft | Bedeutung |
|---|---|---|
| A | Atomarität | ganz oder gar nicht – keine Teilausführung |
| C | Konsistenz | nur gültige, regelkonforme Zustände |
| I | Isolation | parallele Transaktionen stören sich nicht |
| D | Dauerhaftigkeit | bestätigte Änderungen bleiben (auch nach Absturz) |
Am Überweisungsbeispiel: Atomarität verhindert, dass nur abgebucht, aber nicht gutgeschrieben wird. Konsistenz sorgt dafür, dass die Summe stimmt. Isolation verhindert, dass eine gleichzeitige Abfrage den Zwischenstand sieht. Dauerhaftigkeit garantiert, dass das Geld auch nach einem Serverneustart angekommen ist.
Wozu der Aufwand?
Selbstkontrolle
Selbstkontrolle
Was besagt die Atomarität (das A in ACID)?
Häufige Fragen
Was ist der Unterschied zwischen COMMIT und ROLLBACK?
COMMIT schließt eine Transaktion erfolgreich ab und macht alle Änderungen dauerhaft sichtbar. ROLLBACK bricht sie ab und stellt den Zustand von vor Beginn der Transaktion wieder her. Solange kein COMMIT erfolgt ist, sind die Änderungen für andere in der Regel nicht endgültig.
Warum ist Isolation wichtig?
Weil in der Praxis viele Transaktionen gleichzeitig laufen. Ohne Isolation könnte eine Transaktion Zwischenstände einer anderen lesen und daraus falsche Schlüsse ziehen, etwa einen Kontostand, der gleich wieder zurückgerollt wird. Isolation sorgt dafür, dass jede Transaktion so arbeitet, als wäre sie allein.
Was ist ein Deadlock?
Ein Deadlock entsteht, wenn zwei Transaktionen jeweils auf eine Sperre warten, die die andere hält – beide blockieren sich gegenseitig endlos. Datenbanken erkennen das und brechen eine der Transaktionen mit einem Rollback ab, damit die andere weiterlaufen kann. Gut geschriebene Anwendungen fangen diesen Fall ab und versuchen es erneut.
Haben alle Datenbanken ACID?
Klassische relationale Datenbanken sind auf ACID ausgelegt. Manche NoSQL-Systeme lockern einzelne Eigenschaften zugunsten von Geschwindigkeit und Skalierbarkeit und bieten nur „eventual consistency". Für Geschäftsdaten, bei denen Korrektheit zählt, sind ACID-Datenbanken die sichere Wahl.
Weiterlesen: SQL-Grundlagen: Daten mit SELECT abfragen · SQL-JOINs erklärt: INNER JOIN und LEFT JOIN · Normalisierung: Datenbanken ohne Redundanz
Das Wichtigste in Kürze
- Eine Transaktion ist eine unteilbare Einheit: ganz oder gar nicht.
- COMMIT bestätigt, ROLLBACK macht rückgängig.
- ACID: Atomarität, Consistenz, Isolation, Dauerhaftigkeit.
- Standardbeispiel: die Banküberweisung.
- Transaktionen machen Datenbanken verlässlich bei parallelem Zugriff und Abstürzen.