Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Isolation. Wiederholbare Lese- und Serialisierbare Ebenen | Acid
Fortgeschrittene Techniken in SQL

bookIsolation. Wiederholbare Lese- und Serialisierbare Ebenen

Repeatable Read

Die Repeatable Read-Isolationsstufe in Datenbanken stellt sicher, dass beim Starten einer Transaktion ein Schnappschuss der Datenbank angezeigt wird, der während der gesamten Aufgabe unverändert bleibt.
Das bedeutet, dass selbst wenn während der Bearbeitung andere Änderungen an der Datenbank vorgenommen werden, nur die Daten sichtbar sind, wie sie zu Beginn waren.
Transaktionen unter Repeatable Read-Isolation halten Lesesperren auf allen referenzierten Zeilen und Schreibsperren auf Zeilen, die sie einfügen, aktualisieren oder löschen. Dies verhindert verlorene Updates, Dirty Reads und Non-Repeatable Reads.
Es gibt jedoch ein Problem, das bei dieser Isolationsart weiterhin auftreten kann – Phantom Read.

Phantom read

Der Phantom Read kann auftreten, wenn eine Transaktion Daten liest und eine andere Transaktion neue Datensätze zur Datenbank hinzufügt. Infolgedessen können bei zwei aufeinanderfolgenden Lesevorgängen unterschiedliche Ergebnismengen zurückgegeben werden.

Non-repeatable read vs phantom read

Ein Non-Repeatable Read tritt auf, wenn dieselbe Abfrage, die von Benutzer A ausgeführt wird, unterschiedliche Werte für dieselbe Zeile zwischen aufeinanderfolgenden Lesevorgängen zurückgibt, typischerweise aufgrund von Änderungen durch Benutzer B.

Ein Phantom Read hingegen tritt auf, wenn dieselbe Abfrage, die von Benutzer A ausgeführt wird, unterschiedliche Mengen an Zeilen zwischen aufeinanderfolgenden Lesevorgängen zurückgibt, auch wenn die einzelnen Zeilen selbst nicht aktualisiert wurden.

Wir können diese Isolationsstufe in unserer SQL-Abfrage mit folgendem Befehl festlegen:
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;

Serializable

Die Serializable-Isolationsstufe ist die höchste Isolationsstufe in Datenbanken und gewährleistet die strengste Form der Parallelitätskontrolle.
Auf dieser Stufe werden Transaktionen so ausgeführt, als ob sie seriell verarbeitet würden, eine nach der anderen, auch wenn sie tatsächlich gleichzeitig ausgeführt werden können. Dies stellt sicher, dass das Ergebnis der Transaktionen dem entspricht, als wären sie in einer bestimmten Reihenfolge ausgeführt worden, wodurch Konsistenz gewahrt und alle bekannten Parallelitätsanomalien verhindert werden.

Hinweis

Die Verwendung dieser Isolationsstufe kann aufgrund erhöhter Sperrungen zu einer geringeren Performance führen.

Wir können die folgende Anweisung verwenden, um diese Isolationsstufe in unserer SQL-Abfrage festzulegen:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

question-icon

Ordnen Sie die Isolationsstufen ihren Beschreibungen zu.

Read Uncommitted:
Read Committed:

Repeatable Read:

Serializable:

Click or drag`n`drop items and fill in the blanks

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 7

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Suggested prompts:

What is the difference between phantom read and non-repeatable read?

Can you give an example of how phantom reads occur in practice?

How does the Serializable isolation level prevent phantom reads?

Awesome!

Completion rate improved to 4.35

bookIsolation. Wiederholbare Lese- und Serialisierbare Ebenen

Swipe um das Menü anzuzeigen

Repeatable Read

Die Repeatable Read-Isolationsstufe in Datenbanken stellt sicher, dass beim Starten einer Transaktion ein Schnappschuss der Datenbank angezeigt wird, der während der gesamten Aufgabe unverändert bleibt.
Das bedeutet, dass selbst wenn während der Bearbeitung andere Änderungen an der Datenbank vorgenommen werden, nur die Daten sichtbar sind, wie sie zu Beginn waren.
Transaktionen unter Repeatable Read-Isolation halten Lesesperren auf allen referenzierten Zeilen und Schreibsperren auf Zeilen, die sie einfügen, aktualisieren oder löschen. Dies verhindert verlorene Updates, Dirty Reads und Non-Repeatable Reads.
Es gibt jedoch ein Problem, das bei dieser Isolationsart weiterhin auftreten kann – Phantom Read.

Phantom read

Der Phantom Read kann auftreten, wenn eine Transaktion Daten liest und eine andere Transaktion neue Datensätze zur Datenbank hinzufügt. Infolgedessen können bei zwei aufeinanderfolgenden Lesevorgängen unterschiedliche Ergebnismengen zurückgegeben werden.

Non-repeatable read vs phantom read

Ein Non-Repeatable Read tritt auf, wenn dieselbe Abfrage, die von Benutzer A ausgeführt wird, unterschiedliche Werte für dieselbe Zeile zwischen aufeinanderfolgenden Lesevorgängen zurückgibt, typischerweise aufgrund von Änderungen durch Benutzer B.

Ein Phantom Read hingegen tritt auf, wenn dieselbe Abfrage, die von Benutzer A ausgeführt wird, unterschiedliche Mengen an Zeilen zwischen aufeinanderfolgenden Lesevorgängen zurückgibt, auch wenn die einzelnen Zeilen selbst nicht aktualisiert wurden.

Wir können diese Isolationsstufe in unserer SQL-Abfrage mit folgendem Befehl festlegen:
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;

Serializable

Die Serializable-Isolationsstufe ist die höchste Isolationsstufe in Datenbanken und gewährleistet die strengste Form der Parallelitätskontrolle.
Auf dieser Stufe werden Transaktionen so ausgeführt, als ob sie seriell verarbeitet würden, eine nach der anderen, auch wenn sie tatsächlich gleichzeitig ausgeführt werden können. Dies stellt sicher, dass das Ergebnis der Transaktionen dem entspricht, als wären sie in einer bestimmten Reihenfolge ausgeführt worden, wodurch Konsistenz gewahrt und alle bekannten Parallelitätsanomalien verhindert werden.

Hinweis

Die Verwendung dieser Isolationsstufe kann aufgrund erhöhter Sperrungen zu einer geringeren Performance führen.

Wir können die folgende Anweisung verwenden, um diese Isolationsstufe in unserer SQL-Abfrage festzulegen:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

question-icon

Ordnen Sie die Isolationsstufen ihren Beschreibungen zu.

Read Uncommitted:
Read Committed:

Repeatable Read:

Serializable:

Click or drag`n`drop items and fill in the blanks

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 7
some-alt