Isolationsgrad
Der Isolationsgrad (isolation level) einer Transaktion legt fest, wie sich eine Transaktion beim Auftreten eines der Multiuser-Probleme (Dirty-Read, Non-Repeatable-Read oder Phantom) verhalten soll.
Der 'Isolationsgrad' hat unter SQL folgende Werte:
- read uncommitted
- Eine Transaktion kann Daten lesen, die von einer anderen, noch nicht abgeschlossenen Transaktion geschrieben wurden.
- read committed
- Eine Transaktion kann nur Daten lesen, die von einer anderen Transaktionen mit commit bestätigt wurden.
- repeatable read
- Unbeabsichtigtes, nichtwiederholbares Lesen wird verhindert
- serializable
- Mehrere Transaktionen verhalten sich so, als ob sie nacheinander statt gleichzeitig ausgeführt worden wären.
Charakterisierung des Isolationsgrades nach drei Problemen:
Isolationsgrad | Dirty-Read | Non-Repeatable-Read | Phantom |
---|---|---|---|
read uncommitted | ja | ja | ja |
read committed | nein | ja | ja |
repeatable read | nein | nein | ja |
serializable | nein | nein | nein |
Der Isolationsgrad wird mit der SET-TRANSACTION -Anweisung festgelegt.
Die Datenbankhersteller fahren hier unterschiedliche Strategien. So sind unter Oracle und Postgres (siehe http://www.postgresql.org/files/documentation/books/pghandbuch/html/transaction-iso.html) nur der Isolationsgrade serializable und read committed möglich.
KategorieTransaktionen, SQL, I