ACID-Eigenschaften und Anomalien
Wiederholen Sie Atomarität, Konsistenz, Isolation und Dauerhaftigkeit sowie die vier klassischen Anomalien: Dirty Read, Non-Repeatable Read, Phantom Read und Lost Update.
ACID-Eigenschaften und Anomalien ist eine kostenlose SQL Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des SQL Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.
ACID
Eine Transaktion ist zuverlässig, wenn sie:
- Atomar — ganz oder gar nicht
- Konsistent — die DB von einem gültigen Zustand in einen anderen überführt
- Isoliert — gleichzeitige Transaktionen kommen sich nicht in die Quere
- Dauerhaft — nach dem Commit überstehen die Daten Abstürze
Eine Transaktion in SQL
Umschließen Sie Operationen mit BEGIN ... COMMIT:
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;
-- If anything fails, ROLLBACK leaves both rows unchanged.Atomarität in Aktion
Wenn das zweite UPDATE fehlschlägt, wird das erste zurückgerollt — Geld geht nicht auf halbem Weg verloren:
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
-- Crash here, or ROLLBACK: account 1 is unchanged.Konsistenz
Constraints (NOT NULL, CHECK, FK) werden beim Commit geprüft. Eine Transaktion, die die DB in einem ungültigen Zustand zurücklassen würde, schlägt fehl:
BEGIN;
INSERT INTO orders (user_id, total) VALUES (999, 100); -- FK fails on commit if user 999 doesn't exist.
COMMIT;
-- ERROR: insert or update violates foreign key constraint
-- ROLLBACK happens automatically.Isolation: Warum sie wichtig ist
Ohne Isolation können zwei gleichzeitige Transaktionen die Sicht der jeweils anderen auf die Daten verfälschen. Klassische Anomalien:
- Dirty Read — nicht bestätigte Daten lesen
- Non-Repeatable Read — dieselbe Abfrage liefert unterschiedliche Zeilen
- Phantom — während der Transaktion erscheinen neue Zeilen
- Lost Update — zwei Aktualisierungen überschreiben sich gegenseitig
Dirty Read
Eine Zeile lesen, die eine andere Transaktion geändert, aber noch nicht bestätigt hat. PostgreSQL verhindert dies auf allen Isolationsebenen.
Non-Repeatable Read
Sie lesen Zeile 1, eine andere Transaktion bestätigt eine Aktualisierung von Zeile 1, und Sie lesen sie erneut — der Wert ist anders.
Phantom Read
Sie führen SELECT COUNT(*) zweimal in einer Transaktion aus. Zwischen den Aufrufen bestätigt eine andere Transaktion ein INSERT — der zweite Zählerstand ist höher.
Lost Update
Zwei Transaktionen lesen beide balance=100, schreiben beide balance=balance-50 und bestätigen beide — eine der -50-Aktualisierungen geht verloren.
Dauerhaftigkeit
Sobald COMMIT zurückkehrt, befindet sich die Änderung auf der Festplatte (oder ist je nach Einstellungen repliziert). Ein Absturz eine Millisekunde später führt nicht zu ihrem Verlust. PostgreSQL gewährleistet Dauerhaftigkeit über WAL (Write-Ahead Logging).
Autocommit
Standardmäßig ist jede Anweisung ihre eigene Transaktion:
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
-- Implicitly: BEGIN; statement; COMMIT;SAVEPOINT
Teilweises Zurückrollen innerhalb einer Transaktion:
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
SAVEPOINT before_step2;
UPDATE accounts SET balance = balance + 100 WHERE id = 999;
-- ERROR — but we can recover:
ROLLBACK TO SAVEPOINT before_step2;
-- continue
COMMIT;Zusammenfassung
Transaktionen sind das Sicherheitsnetz relationaler Datenbanken.
- ACID: atomar, konsistent, isoliert, dauerhaft
- Vier klassische Anomalien
- BEGIN ... COMMIT oder ROLLBACK
- SAVEPOINT für teilweises Zurückrollen
Kurzer Check
Welche Anomalie tritt auf, wenn zwei Transaktionen denselben Wert lesen, ihn ändern und beide bestätigen?
Häufig gestellte Fragen
Ist die Lektion „ACID-Eigenschaften und Anomalien“ kostenlos?
Ja — der vollständige Text von „ACID-Eigenschaften und Anomalien“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des SQL Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „ACID-Eigenschaften und Anomalien“?
Wiederholen Sie Atomarität, Konsistenz, Isolation und Dauerhaftigkeit sowie die vier klassischen Anomalien: Dirty Read, Non-Repeatable Read, Phantom Read und Lost Update. Du übst SQL Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um SQL Academy zu starten?
Keine Vorkenntnisse erforderlich. SQL Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „ACID-Eigenschaften und Anomalien“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser SQL Academy-Lektion Code schreiben und ausführen?
Ja. Jede SQL Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- ACID-Eigenschaften und Anomalien
- Isolationsstufen: READ COMMITTED, REPEATABLE READ, SERIALIZABLE
- Deadlocks: Erkennung und Vermeidung
- Optimistisches vs. pessimistisches Sperren