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
course content

Kursinhalt

Fortgeschrittene Techniken in SQL

Fortgeschrittene Techniken in SQL

1. Acid
2. Abfrageoptimierung.Indizes
3. Einige Zusätzliche Themen

book
Isolation. Wiederholbare Lese- und Serialisierbare Ebenen

Wiederholbares Lesen

Das Wiederholbare Lesen-Isolationslevel in Datenbanken stellt sicher, dass Sie, wenn Sie eine Transaktion starten, einen Schnappschuss der Datenbank sehen, der während Ihrer Aufgabe gleich bleibt.
Das bedeutet, dass Sie, selbst wenn während Ihrer Arbeit andere Änderungen an der Datenbank vorgenommen werden, nur die Daten sehen, wie sie zu Beginn waren.
Transaktionen unter dem Isolationslevel Wiederholbares Lesen halten Lesesperren auf allen Zeilen, auf die sie verweisen, und Schreibsperren auf Zeilen, die sie einfügen, aktualisieren oder löschen. Dies verhindert verlorene Updates, schmutzige und nicht wiederholbare Lesevorgänge.
Es gibt jedoch ein Problem, das bei dieser Art der Isolation weiterhin auftritt - Phantomlesen.

Phantomlesen

Das Phantomlesen kann auftreten, wenn eine Transaktion Daten liest und eine andere Transaktion neue Datensätze zur Datenbank hinzufügt. Folglich können wir unterschiedliche Ergebnismengen für zwei aufeinanderfolgende Lesevorgänge erhalten.

Nicht wiederholbares Lesen vs. Phantomlesen

Ein nicht wiederholbares Lesen 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.

Phantomlesen hingegen tritt auf, wenn dieselbe Abfrage, die von Benutzer A ausgeführt wird, unterschiedliche Mengen von Zeilen zwischen aufeinanderfolgenden Lesevorgängen zurückgibt, obwohl die einzelnen Zeilen selbst möglicherweise nicht aktualisiert wurden.

Wir können dieses Isolationsniveau in unserer SQL-Abfrage mit dem folgenden Befehl angeben:
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;

Serializable

Das Serializable-Isolationsniveau ist das höchste Isolationsniveau in Datenbanken und gewährleistet die strengste Form der Parallelitätskontrolle.
Auf diesem Niveau werden Transaktionen so ausgeführt, als ob sie seriell verarbeitet würden, eine nach der anderen, obwohl sie tatsächlich gleichzeitig ausgeführt werden können. Dies stellt sicher, dass das Ergebnis der Transaktionen dasselbe ist, als ob sie in einer seriellen Reihenfolge ausgeführt würden, wodurch Konsistenz gewährleistet und alle entdeckten Parallelitätsanomalien verhindert werden.

Hinweis

Die Verwendung dieses Isolationsniveaus kann aufgrund erhöhter Sperrungen zu einer verringerten Leistung führen.

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

question-icon

Ordnen Sie die Isolationsebenen 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
We're sorry to hear that something went wrong. What happened?
some-alt