Middle
Welke soorten transactiesisolatie zijn er?
sobes.tech AI
Antwoord van AI
Transactie-isolatie bepaalt in hoeverre een transactie de tussentijdse wijzigingen van andere gelijktijdig uitgevoerde transacties kan zien.
De SQL-standaard definieert vier isolatieniveaus:
- Read Uncommitted (Ongecommitteerde lezing): Het laagste niveau. Een transactie kan ongecommitteerde wijzigingen van andere transacties lezen (vuile lezing).
- Read Committed (Gecommitteerde lezing): De transactie kan alleen gegevens lezen die door andere transacties zijn gecommitteerd. Vermijdt "vuile" lezing.
- Repeatable Read (Herhaalbare lezing): De transactie garandeert dat de gegevens die tijdens de transactie worden gelezen, niet veranderen bij herhaalde lezing. Vermijdt "vuile" en "niet-herhaalbare" lezing. Er kunnen "fantomen" voorkomen.
- Serializable (Serieel): Het hoogste isolatieniveau. Garandeert dat parallelle transacties worden uitgevoerd alsof ze sequentieel zijn. Vermijdt alle ongewenste verschijnselen: "vuile" lezing, "niet-herhaalbare" lezing en "fantomen".
Ongewenste verschijnselen bij parallelle uitvoering van transacties:
- Dirty Read (Vuile lezing): Transactie A leest gegevens die door transactie B zijn gewijzigd, maar nog niet zijn gecommitteerd. Als transactie B de wijzigingen terugdraait, werkt transactie A met onjuiste gegevens.
- Non-repeatable Read (Niet-herhaalbare lezing): Transactie A leest dezelfde gegevens twee keer, maar tussen de lezingen bevestigt transactie B een wijziging in die gegevens. Hierdoor krijgt transactie A verschillende waarden.
- Phantom Read (Fantomlezen): Transactie A voert een query uit die een reeks rijen retourneert. Transactie B bevestigt het invoegen of verwijderen van rijen die voldoen aan de criteria van transactie A. Bij herhaald uitvoeren krijgt transactie A een andere reeks rijen.
Samenvattingstabel van ongewenste verschijnselen per isolatieniveau:
| Isolatieniveau | Vuile lezing | Niet-herhaalbare lezing | Fantomen |
|---|---|---|---|
| Read Uncommitted | Ja | Ja | Ja |
| Read Committed | Nee | Ja | Ja |
| Repeatable Read | Nee | Nee | Ja |
| Serializable | Nee | Nee | Nee |
De keuze van het isolatieniveau beïnvloedt de prestaties en de correctheid van de toepassing. Hoe hoger het isolatieniveau, hoe hoger de extra kosten.