Isolationsstufen: READ COMMITTED, REPEATABLE READ, SERIALIZABLE
Vergleichen Sie die Isolationsstufen des SQL-Standards mit der Implementierung in PostgreSQL und wählen Sie die passende Stufe für Ihre Arbeitslast.
Isolationsstufen: READ COMMITTED, REPEATABLE READ, SERIALIZABLE ist eine kostenlose SQL Academy-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 Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.
Vier Standardebenen
Der SQL-Standard definiert vier Isolationsebenen:
- READ UNCOMMITTED
- READ COMMITTED
- REPEATABLE READ
- SERIALIZABLE
PostgreSQL implementiert drei davon (READ UNCOMMITTED verhält sich wie READ COMMITTED).
READ COMMITTED (PostgreSQL-Standard)
Jede Anweisung sieht Daten, die vor Beginn der Anweisung bestätigt wurden. Innerhalb einer einzelnen Transaktion können Sie unterschiedliche Snapshots sehen.
-- Inside one transaction:
SELECT balance FROM accounts WHERE id = 1; -- 100
-- meanwhile another tx commits balance=200
SELECT balance FROM accounts WHERE id = 1; -- 200 (non-repeatable read)REPEATABLE READ (Snapshot-Isolation)
Sieht einen Snapshot, der zu Beginn der Transaktion erstellt wurde. Das erneute Lesen derselben Zeile liefert immer denselben Wert. Das REPEATABLE READ von PostgreSQL verhindert außerdem Phantoms.
BEGIN ISOLATION LEVEL REPEATABLE READ;
SELECT balance FROM accounts WHERE id = 1; -- 100
-- another tx commits balance=200
SELECT balance FROM accounts WHERE id = 1; -- still 100
COMMIT;SERIALIZABLE
Am stärksten: als ob die Transaktionen nacheinander ausgeführt würden. PostgreSQL verwendet Serializable Snapshot Isolation (SSI) — erkennt Abhängigkeiten zwischen gleichzeitigen Transaktionen und bricht widersprüchliche Transaktionen ab:
BEGIN ISOLATION LEVEL SERIALIZABLE;
...
COMMIT;
-- ERROR: could not serialize access due to read/write dependenciesIsolationsebene festlegen
Pro Transaktion, pro Sitzung oder global:
-- Per transaction:
BEGIN ISOLATION LEVEL SERIALIZABLE;
-- Per session:
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
-- Default for new transactions in this session:
SET default_transaction_isolation = 'repeatable read';
-- Global default in postgresql.conf:
-- default_transaction_isolation = 'read committed'Von den Ebenen zugelassene Anomalien
| Ebene | Dirty Read | Non-Repeatable Read | Phantom |
|---|---|---|---|
| READ UNCOMMITTED | möglich | möglich | möglich |
| READ COMMITTED | nein | möglich | möglich |
| REPEATABLE READ | nein | nein | nein (in PG) |
| SERIALIZABLE | nein | nein | nein |
Leistungskompromisse
- READ COMMITTED — minimaler Mehraufwand, Standard
- REPEATABLE READ — derselbe Plan, konsistente Snapshots, keine Leistungseinbußen außer bei Schreibkonflikten
- SERIALIZABLE — zusätzlicher Verwaltungsaufwand, kann Transaktionen abbrechen; die Anwendung benötigt eine Wiederholungslogik
Wiederholungsmuster für Serializable
SERIALIZABLE kann mit dem Code 40001 abgebrochen werden. Wiederholen Sie den Vorgang in einer Schleife:
for (let i = 0; i < 3; i++) {
try {
await client.query('BEGIN ISOLATION LEVEL SERIALIZABLE');
// ... work ...
await client.query('COMMIT');
break;
} catch (e) {
if (e.code === '40001') continue;
throw e;
}
}Einen konsistenten Snapshot lesen
Für lang laufende analytische Abfragen, die konsistente Daten benötigen, ist REPEATABLE READ der richtige Kompromiss.
Verhalten bei Schreibkonflikten
Wenn zwei Transaktionen dieselbe Zeile ändern:
- READ COMMITTED — die zweite wartet, liest anschließend die neue Zeile erneut und versucht es noch einmal
- REPEATABLE READ — die zweite wird mit "could not serialize" abgebrochen — die Anwendung muss es erneut versuchen
Die richtige Ebene wählen
Faustregeln:
- OLTP — READ COMMITTED (Standard)
- Berichte, die Konsistenz benötigen — REPEATABLE READ
- Geld / Bestand — SERIALIZABLE + Wiederholung oder explizite Sperren (FOR UPDATE)
Explizite Sperren sind manchmal besser als Isolation
Oft ist SELECT ... FOR UPDATE bei READ COMMITTED für eine einzelne stark umkämpfte Zeile einfacher als SERIALIZABLE.
Zusammenfassung
Isolationsebenen wägen Sicherheit gegen Nebenläufigkeit ab.
- READ COMMITTED ist der Standard
- REPEATABLE READ für konsistente Lesevorgänge
- SERIALIZABLE für "wie seriell" — benötigt eine Wiederholungslogik
Kurzer Check
Welche Isolationsebene ist der Standard von PostgreSQL?
Häufig gestellte Fragen
Ist die Lektion „Isolationsstufen: READ COMMITTED, REPEATABLE READ, SERIALIZABLE“ kostenlos?
Ja — der vollständige Text von „Isolationsstufen: READ COMMITTED, REPEATABLE READ, SERIALIZABLE“ 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 „Isolationsstufen: READ COMMITTED, REPEATABLE READ, SERIALIZABLE“?
Vergleichen Sie die Isolationsstufen des SQL-Standards mit der Implementierung in PostgreSQL und wählen Sie die passende Stufe für Ihre Arbeitslast. 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 2 von 4.
Wie lange dauert die Lektion „Isolationsstufen: READ COMMITTED, REPEATABLE READ, SERIALIZABLE“?
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