Sobes.tech
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:

  1. Read Uncommitted (Ongecommitteerde lezing): Het laagste niveau. Een transactie kan ongecommitteerde wijzigingen van andere transacties lezen (vuile lezing).
  2. Read Committed (Gecommitteerde lezing): De transactie kan alleen gegevens lezen die door andere transacties zijn gecommitteerd. Vermijdt "vuile" lezing.
  3. 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.
  4. 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.