Sobes.tech
Middle

Welche Isolationsstufen von Transaktionen in Datenbanken kennst du?

sobes.tech KI

Antwort von AI

Der SQL-Standard definiert vier Isolationsstufen für Transaktionen: Read Uncommitted, Read Committed, Repeatable Read, Serializable.

  1. Read Uncommitted: Die niedrigste Stufe. Eine Transaktion kann Daten lesen, die noch nicht bestätigt wurden (d.h. von einer anderen Transaktion, die noch nicht mit COMMIT abgeschlossen ist). Dies führt zu "schmutzigen" Lesevorgängen (dirty reads).

  2. Read Committed: Die Transaktion sieht nur Daten, die vor oder während ihrer Ausführung bestätigt wurden. Verhindert "schmutzige" Lesevorgänge, erlaubt aber nicht wiederholbare Lesevorgänge (non-repeatable reads) und Phantom-Lesevorgänge.

    • Nicht wiederholbare Lesevorgänge: Das gleiche Lesen innerhalb einer Transaktion kann unterschiedliche Daten zurückgeben, weil eine andere Transaktion sie geändert und bestätigt hat.
    • Phantome: Bei der Ausführung einer Abfrage mit WHERE-Bedingung fügt eine zweite Transaktion Zeilen hinzu oder entfernt sie, die die Bedingung erfüllen, und die erneute Ausführung der gleichen Abfrage innerhalb der ersten Transaktion gibt eine andere Menge an Zeilen zurück.
  3. Repeatable Read: Die Transaktion sieht nur Daten, die vor ihrem Beginn bestätigt wurden. Garantiert, dass wiederholte Lesevorgänge derselben Zeilen in einer Transaktion die gleichen Daten zurückgeben. Verhindert "schmutzige" und nicht wiederholbare Lesevorgänge. Erlaubt Phantom-Lesevorgänge.

    // Beispiel für Repeatable Read
    // Transaktion 1
    // BEGIN TRANSACTION;
    // SELECT COUNT(*) FROM users WHERE status = 'active'; // Zum Beispiel 100
    
    // Transaktion 2 (läuft gleichzeitig)
    // BEGIN TRANSACTION;
    // INSERT INTO users (name, status) VALUES ('Neuer Nutzer', 'active');
    // COMMIT;
    
    // Transaktion 1
    // SELECT COUNT(*) FROM users WHERE status = 'active'; // Immer noch 100 (Phantom)
    // COMMIT;
    
  4. Serializable: Die höchste Isolationsstufe. Garantiert, dass die parallele Ausführung von Transaktionen äquivalent zu einer sequenziellen Ausführung dieser Transaktionen ist. Verhindert "schmutzige" Lesevorgänge, nicht wiederholbare Lesevorgänge und Phantom-Lesevorgänge. Kann die Leistung durch Sperren verringern.

In verschiedenen DBMS können eigene Implementierungen und Besonderheiten der Isolationsstufen existieren, ebenso wie zusätzliche Stufen. Zum Beispiel ist in MySQL InnoDB die Standardstufe Repeatable Read.