Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Isolation: Read Committed- und Uncommitted-Stufen | Acid
Fortgeschrittene Techniken in SQL

bookIsolation: Read Committed- und Uncommitted-Stufen

Im Kontext von Datenbanken bezeichnet Isolation die Fähigkeit eines Datenbanksystems, die Sichtbarkeit von Änderungen durch gleichzeitig ablaufende Transaktionen zu steuern. Sie stellt sicher, dass Transaktionen unabhängig voneinander ausgeführt werden, wodurch gegenseitige Beeinflussungen vermieden und die Datenintegrität gewahrt bleibt.

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 wenn diese noch nicht bestätigt wurden. Diese Stufe erlaubt dirty reads, was bedeutet, dass eine Transaktion Daten lesen kann, die von einer anderen Transaktion geändert, aber noch nicht bestätigt wurden.

Dirty reads

Implementierung

Um die Isolationsstufe für eine Transaktion festzulegen, kann folgender Befehl in der Abfrage verwendet werden:

-- Start transaction
BEGIN;
-- Set the isolation level for the transaction
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

/* Transaction query */
COMMIT;
  • SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;: Dieser Befehl ändert die Isolationsstufe für die aktuelle Transaktion auf "Read Uncommitted" und ermöglicht es der Transaktion, möglicherweise Daten zu lesen, die von anderen noch nicht abgeschlossenen Transaktionen geändert wurden;

  • Dieser Befehl muss ausschließlich innerhalb eines Transaktionsblocks verwendet werden! Andernfalls hat er keine Wirkung und es wird die Standard-Isolationsstufe verwendet.

Die aktuelle Isolationsstufe kann mit folgendem Befehl überprüft werden:
SHOW TRANSACTION ISOLATION LEVEL;

Read committed

Die Isolationsstufe Read Committed stellt sicher, dass eine Transaktion nur Daten sieht, die von anderen Transaktionen bereits bestätigt wurden.
Das bedeutet, dass nicht bestätigte Änderungen anderer Transaktionen für Transaktionen mit Read Committed-Isolation nicht sichtbar sind.
Dadurch werden dirty reads verhindert, da eine Transaktion nur bestätigte Daten lesen kann. Allerdings treten bei dieser Isolationsstufe Probleme mit non-repeatable reads auf.

Non-repeatable reads

Das Isolationslevel "Read committed" erlaubt nicht wiederholbare Lesevorgänge, da es den Lesevorgang für Werte sperrt, die sich in nicht abgeschlossenen Transaktionen befinden, jedoch den Schreibvorgang nicht sperrt.
Daher ist es möglich, neue Daten in die Zeile zu schreiben, die gerade von einer anderen Transaktion gelesen wird.

Verlorenes Update

Aufgrund des Fehlens einer Schreibsperre gibt es ein weiteres Problem mit dem Isolationslevel Read committed – verlorene Updates.

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

Implementierung

Wir können diese Isolationsstufe auch mit den folgenden Befehlen festlegen:

-- Start transaction
BEGIN;
-- Set the isolation level for the session
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;

/* Transaction query */
COMMIT;

Es ist wichtig zu beachten, dass Read Committed die Standard-Isolationsstufe für die meisten Datenbankmanagementsysteme ist, weshalb wir sie oft nicht explizit angeben müssen.

question mark

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

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 6

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 are the other two isolation levels besides Read Uncommitted and Read Committed?

Can you explain what repeatable read and serializable isolation levels are?

How do non-repeatable reads and lost updates affect data consistency?

Awesome!

Completion rate improved to 4.35

bookIsolation: Read Committed- und Uncommitted-Stufen

Swipe um das Menü anzuzeigen

Im Kontext von Datenbanken bezeichnet Isolation die Fähigkeit eines Datenbanksystems, die Sichtbarkeit von Änderungen durch gleichzeitig ablaufende Transaktionen zu steuern. Sie stellt sicher, dass Transaktionen unabhängig voneinander ausgeführt werden, wodurch gegenseitige Beeinflussungen vermieden und die Datenintegrität gewahrt bleibt.

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 wenn diese noch nicht bestätigt wurden. Diese Stufe erlaubt dirty reads, was bedeutet, dass eine Transaktion Daten lesen kann, die von einer anderen Transaktion geändert, aber noch nicht bestätigt wurden.

Dirty reads

Implementierung

Um die Isolationsstufe für eine Transaktion festzulegen, kann folgender Befehl in der Abfrage verwendet werden:

-- Start transaction
BEGIN;
-- Set the isolation level for the transaction
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

/* Transaction query */
COMMIT;
  • SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;: Dieser Befehl ändert die Isolationsstufe für die aktuelle Transaktion auf "Read Uncommitted" und ermöglicht es der Transaktion, möglicherweise Daten zu lesen, die von anderen noch nicht abgeschlossenen Transaktionen geändert wurden;

  • Dieser Befehl muss ausschließlich innerhalb eines Transaktionsblocks verwendet werden! Andernfalls hat er keine Wirkung und es wird die Standard-Isolationsstufe verwendet.

Die aktuelle Isolationsstufe kann mit folgendem Befehl überprüft werden:
SHOW TRANSACTION ISOLATION LEVEL;

Read committed

Die Isolationsstufe Read Committed stellt sicher, dass eine Transaktion nur Daten sieht, die von anderen Transaktionen bereits bestätigt wurden.
Das bedeutet, dass nicht bestätigte Änderungen anderer Transaktionen für Transaktionen mit Read Committed-Isolation nicht sichtbar sind.
Dadurch werden dirty reads verhindert, da eine Transaktion nur bestätigte Daten lesen kann. Allerdings treten bei dieser Isolationsstufe Probleme mit non-repeatable reads auf.

Non-repeatable reads

Das Isolationslevel "Read committed" erlaubt nicht wiederholbare Lesevorgänge, da es den Lesevorgang für Werte sperrt, die sich in nicht abgeschlossenen Transaktionen befinden, jedoch den Schreibvorgang nicht sperrt.
Daher ist es möglich, neue Daten in die Zeile zu schreiben, die gerade von einer anderen Transaktion gelesen wird.

Verlorenes Update

Aufgrund des Fehlens einer Schreibsperre gibt es ein weiteres Problem mit dem Isolationslevel Read committed – verlorene Updates.

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

Implementierung

Wir können diese Isolationsstufe auch mit den folgenden Befehlen festlegen:

-- Start transaction
BEGIN;
-- Set the isolation level for the session
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;

/* Transaction query */
COMMIT;

Es ist wichtig zu beachten, dass Read Committed die Standard-Isolationsstufe für die meisten Datenbankmanagementsysteme ist, weshalb wir sie oft nicht explizit angeben müssen.

question mark

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

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 6
some-alt