Die vier Isolationsstufen
Von Read Uncommitted bis Serializable und was jede Stufe zulässt.
Die vier Isolationsstufen ist eine kostenlose SQL Interview Prep-Lektion auf CoddyKit. Dies ist Lektion 2 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 Interview Prep-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL Interview Prep-Kurs umfasst insgesamt 4 Lektionen.
Die Frage hinter der Frage
Wenn ein Interviewer Sie auffordert, "die vier Isolationsstufen zu nennen", wird in Wirklichkeit geprüft, ob Sie die Abwägung erklären können: Stärkere Isolation bedeutet weniger Anomalien, aber auch geringere Nebenläufigkeit.
Der SQL-Standard definiert vier Stufen, geordnet von der schwächsten zur stärksten:
- READ UNCOMMITTED
- READ COMMITTED
- REPEATABLE READ
- SERIALIZABLE
Jede Stufe lässt eine bestimmte Menge von Leseanomalien zu oder verhindert sie. Diese Lektion behandelt die Stufen; die nächste erklärt die Anomalien ausführlich.
Die Isolationsstufe festlegen
Sie legen die Isolation pro Transaktion oder pro Sitzung fest. Die Syntax ist bei den verschiedenen Engines nahezu identisch.
Wenn Sie keine Stufe festlegen, hat jede Datenbank einen Standardwert. Die Standardwerte zu kennen, ist eine häufige Frage im Interview, daher behandeln wir sie am Ende.
-- Per transaction (standard SQL)
BEGIN TRANSACTION ISOLATION LEVEL READ COMMITTED;
-- ... statements ...
COMMIT;
-- Per session
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;Stufe 1: READ UNCOMMITTED
READ UNCOMMITTED ist die schwächste Stufe. Eine Transaktion kann Zeilen lesen, die eine andere Transaktion geändert, aber noch nicht bestätigt hat. Diese werden als Dirty Reads bezeichnet.
Wenn die andere Transaktion zurückgesetzt wird, haben Sie Daten gelesen, die offiziell nie existiert haben. Das ist für alles, was korrekt sein muss, gefährlich.
Hinweis: Postgres behandelt READ UNCOMMITTED genauso wie READ COMMITTED und führt daher tatsächlich niemals Dirty Reads aus. SQL Server und MySQL unterstützen diese Stufe dagegen tatsächlich.
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
BEGIN;
-- may see another transaction's uncommitted (dirty) rows
SELECT balance FROM accounts WHERE id = 1;
COMMIT;Stufe 2: READ COMMITTED
READ COMMITTED garantiert, dass Sie ausschließlich bestätigte Daten lesen. Es gibt keine Dirty Reads.
Jede Anweisung sieht jedoch den aktuellsten bestätigten Snapshot. Wenn Sie dieselbe Abfrage innerhalb einer Transaktion zweimal ausführen, kann eine dazwischen bestätigte Transaktion das Ergebnis verändern. Diese Anomalie wird als Non-Repeatable Read bezeichnet.
Dies ist der Standard in Postgres, Oracle und SQL Server und für die meisten Anwendungen ein sinnvoller Kompromiss.
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
BEGIN;
SELECT balance FROM accounts WHERE id = 1; -- returns 500
-- another transaction commits an update to id = 1
SELECT balance FROM accounts WHERE id = 1; -- may now return 700
COMMIT;Stufe 3: REPEATABLE READ
REPEATABLE READ stellt sicher, dass Sie beim zweimaligen Lesen einer Zeile innerhalb derselben Transaktion beide Male denselben Wert erhalten. Zu Beginn der Transaktion wird ein konsistenter Snapshot erstellt.
Dirty Reads und Non-Repeatable Reads werden verhindert. Der Standard erlaubt weiterhin Phantom Reads: neue Zeilen, die Ihrer WHERE-Klausel entsprechen und bei einer erneuten Abfrage erscheinen.
Wichtig: Dies ist der Standard in MySQL/InnoDB. Die Implementierung von InnoDB verhindert durch Next-Key-Locks außerdem die meisten Phantom Reads.
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
BEGIN;
SELECT balance FROM accounts WHERE id = 1; -- 500
-- another transaction commits a change to id = 1
SELECT balance FROM accounts WHERE id = 1; -- still 500 in this txn
COMMIT;Stufe 4: SERIALIZABLE
SERIALIZABLE ist die strengste Stufe. Die Datenbank garantiert, dass das Ergebnis der nebenläufigen Ausführung von Transaktionen identisch mit dem Ergebnis wäre, wenn sie nacheinander in einer bestimmten seriellen Reihenfolge ausgeführt würden.
Dirty Reads, Non-Repeatable Reads und Phantom Reads werden verhindert. Der Preis dafür sind mehr Sperren oder – in Postgres – Abbrüche wegen Serialisierungsfehlern, die Sie wiederholen müssen.
Formulierung fürs Interview: "SERIALIZABLE vermittelt den Eindruck, dass jede Transaktion allein ausgeführt wurde, allerdings bei geringerer Nebenläufigkeit und möglichen Wiederholungen."
BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SELECT SUM(balance) FROM accounts;
INSERT INTO audit (total) VALUES (...);
COMMIT; -- may raise a serialization_failure you retryDie Anomalienmatrix
Am nützlichsten ist es, sich zu merken, welche Anomalien jede Stufe zulässt. "Ja" bedeutet, dass die Anomalie auftreten kann.
- READ UNCOMMITTED: Dirty Reads=Ja, Non-Repeatable Reads=Ja, Phantom Reads=Ja
- READ COMMITTED: Dirty Reads=Nein, Non-Repeatable Reads=Ja, Phantom Reads=Ja
- REPEATABLE READ: Dirty Reads=Nein, Non-Repeatable Reads=Nein, Phantom Reads=Ja (gemäß Standard)
- SERIALIZABLE: Dirty Reads=Nein, Non-Repeatable Reads=Nein, Phantom Reads=Nein
Mit jedem Schritt nach oben wird eine weitere Anomalie verhindert. Diese Entwicklung ist die vollständige Antwort.
Standard vs. reale Implementierungen
Eine wichtige Unterscheidung auf Senior-Niveau: Der SQL-Standard definiert die Stufen danach, welche Anomalien sie verhindern müssen, nicht danach, wie sie das tun. Reale Engines verhindern häufig mehr.
- Postgres REPEATABLE READ verwendet Snapshot Isolation und verhindert ebenfalls Phantom Reads, kann aber weiterhin von Write Skew betroffen sein.
- MySQL/InnoDB REPEATABLE READ verhindert Phantom Reads durch Next-Key-Locking.
- Postgres SERIALIZABLE verwendet SSI (Serializable Snapshot Isolation) und bricht Transaktionen bei Konflikten ab, statt umfangreiche Sperren einzusetzen.
Wenn Sie das erwähnen, zeigen Sie, dass Sie wissen: Der Standard ist eine Untergrenze und beschreibt nicht exakt das Verhalten jeder Engine.
Standardstufen der einzelnen Engines
Die Standardwerte werden sehr häufig abgefragt. Merken Sie sich diese:
- PostgreSQL: READ COMMITTED
- Oracle: READ COMMITTED (niemals Dirty Reads)
- SQL Server: READ COMMITTED
- MySQL (InnoDB): REPEATABLE READ
Die Ausnahme bei MySQL ist eine beliebte Fangfrage. Wenn Sie gefragt werden, "wie lautet die Standard-Isolationsstufe?", klären Sie immer zuerst, um welche Engine es geht.
Die richtige Stufe in der Praxis wählen
Wie entscheiden Sie sich? Stellen Sie Risiko und Durchsatz gegenüber.
- Verwenden Sie READ COMMITTED für typisches OLTP; diese Stufe ist schnell und verhindert Dirty Reads.
- Verwenden Sie REPEATABLE READ, wenn eine Transaktion dieselben Daten mehrfach liest und sie stabil bleiben müssen (Berichte, mehrstufige Berechnungen).
- Verwenden Sie SERIALIZABLE für Logik, bei der Korrektheit entscheidend ist und keine Anomalie akzeptabel ist. Planen Sie dabei eine Wiederholungslogik für Abbrüche ein.
READ UNCOMMITTED sollte in Produktion fast nie verwendet werden.
Häufige Anschlussfragen
Nachdem Sie die Stufen aufgezählt haben, stellen Interviewer gerne schnelle Anschlussfragen. Halten Sie präzise Antworten bereit:
- "Welche Stufe verhindert Dirty Reads, erlaubt aber Non-Repeatable Reads?" READ COMMITTED.
- "Welche einzige Anomalie erlaubt REPEATABLE READ gemäß dem Standard weiterhin?" Phantom Reads.
- "Warum sollte man nicht immer SERIALIZABLE verwenden?" Die Nebenläufigkeit wird reduziert, und bei Serialisierungsfehlern können Wiederholungen der Transaktion erforderlich sein.
- "Kostet eine höhere Stufe mehr?" Ja, entweder durch Sperren oder durch den Aufwand für Abbruch und Wiederholung.
Wenn Sie diese Fragen sofort beantworten können, beweisen Sie, dass Sie die Stufenfolge verinnerlicht und nicht nur auswendig gelernt haben.
Schnelltest
Eine dieser Aussagen betrifft den am häufigsten abgefragten Fakt zu den Standard-Isolationsstufen.
Zusammenfassung: Vier Stufen, eine Abwägung
Die vier Isolationsstufen bilden eine Skala von der schwächsten zur stärksten Stufe: READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE. Mit jedem Schritt nach oben wird eine weitere Anomalie (Dirty Read, Non-Repeatable Read, Phantom Read) verhindert – auf Kosten der Nebenläufigkeit.
Merken Sie sich die Standardwerte (überall READ COMMITTED außer MySQL mit REPEATABLE READ) und beachten Sie, dass reale Engines häufig mehr verhindern, als der Standard verlangt. Als Nächstes untersuchen wir die drei Leseanomalien, die diese Stufen verhindern sollen.
Häufig gestellte Fragen
Ist die Lektion „Die vier Isolationsstufen“ kostenlos?
Ja — der vollständige Text von „Die vier Isolationsstufen“ 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 Interview Prep-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der SQL Interview Prep-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Die vier Isolationsstufen“?
Von Read Uncommitted bis Serializable und was jede Stufe zulässt. Du übst SQL Interview Prep 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 Interview Prep zu starten?
Keine Vorkenntnisse erforderlich. SQL Interview Prep 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 2 von 4.
Wie lange dauert die Lektion „Die vier Isolationsstufen“?
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 Interview Prep-Lektion Code schreiben und ausführen?
Ja. Jede SQL Interview Prep-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 erklärt
- Die vier Isolationsstufen
- Dirty Reads, Non-Repeatable Reads und Phantom Reads
- Deadlocks, Sperren und MVCC