Middle
Welche Arten der Transaktionsisolation gibt es?
sobes.tech KI
Antwort von AI
Transaktionsisolation bestimmt, wie gut eine Transaktion die Zwischenänderungen anderer paralleler Transaktionen sehen kann.
Der SQL-Standard definiert vier Isolationsstufen:
- Read Uncommitted (Unbestätigtes Lesen): Die niedrigste Stufe. Eine Transaktion kann unbestätigte Änderungen anderer Transaktionen lesen (Dirty Read).
- Read Committed (Bestätigtes Lesen): Die Transaktion kann nur Daten lesen, die von anderen Transaktionen bestätigt wurden. Vermeidet Dirty Reads.
- Repeatable Read (Wiederholbares Lesen): Die Transaktion garantiert, dass die während der Transaktion gelesenen Daten bei wiederholtem Lesen nicht ändern. Vermeidet Dirty Reads und Non-Repeatable Reads. Es können "Phantome" auftreten.
- Serializable (Serialisierbar): Die höchste Isolationsstufe. Garantiert, dass parallele Transaktionen so ausgeführt werden, als ob sie sequenziell wären. Vermeidet alle unerwünschten Phänomene: Dirty Reads, Non-Repeatable Reads und Phantome.
Unerwünschte Phänomene bei paralleler Transaktionsausführung:
- Dirty Read (Schmutziges Lesen): Transaktion A liest Daten, die von Transaktion B modifiziert wurden, aber noch nicht bestätigt sind. Wenn Transaktion B die Änderungen rückgängig macht, arbeitet Transaktion A mit falschen Daten.
- Non-Repeatable Read (Nicht wiederholbares Lesen): Transaktion A liest dieselben Daten zweimal, aber zwischen den Lesungen bestätigt Transaktion B eine Änderung an diesen Daten. Daher erhält Transaktion A unterschiedliche Werte bei den wiederholten Lesungen.
- Phantom Read (Phantomlesen): Transaktion A führt eine Abfrage aus, die eine Menge von Zeilen zurückgibt. Transaktion B bestätigt das Einfügen oder Löschen von Zeilen, die den Kriterien von Transaktion A entsprechen. Bei erneuter Ausführung der Abfrage erhält Transaktion A eine andere Menge von Zeilen.
Zusammenfassungstabelle der unerwünschten Phänomene nach Isolationsstufen:
| Isolationsstufe | Dirty Read | Non-Repeatable Read | Phantome |
|---|---|---|---|
| Read Uncommitted | Ja | Ja | Ja |
| Read Committed | Nein | Ja | Ja |
| Repeatable Read | Nein | Nein | Ja |
| Serializable | Nein | Nein | Nein |
Die Wahl der Isolationsstufe beeinflusst die Leistung und die Korrektheit der Anwendung. Je höher die Isolationsstufe, desto höher sind die zusätzlichen Kosten.