Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Isolation. Gelesene und Nicht Gelesene 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. Gelesene und Nicht Gelesene Ebenen

Im Kontext von Datenbanken bezieht sich Isolation auf die Fähigkeit eines Datenbanksystems, die Sichtbarkeit von Änderungen zu steuern, die durch gleichzeitige Transaktionen vorgenommen werden. Es stellt sicher, dass Transaktionen unabhängig voneinander arbeiten, um Störungen zu vermeiden und die Datenintegrität zu wahren.

Es gibt 4 Isolationsstufen in SQL:

  • read uncommitted;
  • read committed;
  • repeatable read;
  • serializable.

Read uncommitted

Dies ist die niedrigste Isolationsstufe, bei der Transaktionen Änderungen sehen können, die von anderen Transaktionen vorgenommen wurden, selbst bevor sie festgeschrieben sind. Diese Stufe erlaubt dirty reads, was bedeutet, dass eine Transaktion Daten lesen kann, die von einer anderen Transaktion geändert, aber noch nicht festgeschrieben wurden.

Dirty reads

Implementierung

Um das Isolationslevel für die Transaktion festzulegen, können wir den folgenden Befehl in unserer Abfrage verwenden:

  • SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;: Diese Anweisung ändert das Isolationslevel für die aktuelle Transaktion auf "Read Uncommitted", wodurch die Transaktion möglicherweise Daten lesen kann, die von anderen nicht abgeschlossenen Transaktionen geändert wurden;

  • dieser Befehl muss nur innerhalb des Transaktionsblocks verwendet werden! Andernfalls hat er keine Wirkung und es wird ein Standard-Isolationslevel verwendet.

Wir können das aktuelle Isolationslevel auch mit dem folgenden Befehl überprüfen:
SHOW TRANSACTION ISOLATION LEVEL;

Read Committed

Das Read Committed Isolationslevel stellt sicher, dass eine Transaktion nur Daten sieht, die von anderen Transaktionen abgeschlossen wurden.
Das bedeutet, dass nicht abgeschlossene Änderungen, die von anderen Transaktionen vorgenommen wurden, für Transaktionen, die unter Read Committed Isolation arbeiten, nicht sichtbar sind.
Infolgedessen verhindert es Dirty Reads, indem es einer Transaktion erlaubt, nur abgeschlossene Daten zu lesen. Dieses Transaktionslevel hat jedoch Probleme mit nicht wiederholbaren Lesevorgängen.

Nicht wiederholbare Lesevorgänge

Das Isolationslevel "Read committed" erlaubt nicht wiederholbare Lesevorgänge, da es den Lesevorgang auf Werte sperrt, die sich in nicht abgeschlossenen Transaktionen befinden, aber den Schreibvorgang nicht sperrt.
Infolgedessen können wir neue Daten in die Zeile schreiben, die derzeit von einer anderen Transaktion gelesen wird.

Verlorenes Update

Aufgrund des Fehlens der Schreibsperre gibt es ein weiteres Problem mit dem Isolationslevel "Read committed" - verlorene Updates.

Die verlorenen Updates treten auf, wenn zwei parallele Transaktionen versuchen, dieselbe Zeile zu ändern. Infolgedessen überschreibt die Transaktion, die später festgeschrieben wird, die von anderen Transaktionen festgeschriebenen Werte.

Implementierung

Wir können dieses Isolationslevel auch mit den folgenden Befehlen festlegen:

Es ist wichtig zu beachten, dass Read Committed das Standard-Isolationslevel für die meisten Datenbankverwaltungssysteme ist, weshalb wir es nicht angeben müssen.

Wenn eine Transaktion Daten liest, die von einer anderen nicht abgeschlossenen Transaktion geändert wurden, um welche Art von Lesevorgang handelt es sich?

Wenn eine Transaktion Daten liest, die von einer anderen nicht abgeschlossenen Transaktion geändert wurden, um welche Art von Lesevorgang handelt es sich?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 6
We're sorry to hear that something went wrong. What happened?
some-alt