Middle
Aké sú typy izolácie transakcií?
sobes.tech AI
Odpoveď od AI
Izolácia transakcie určuje, do akej miery môže jedna transakcia vidieť medzičasové zmeny iných paralelne vykonávaných transakcií.
Štandard SQL definuje štyri úrovne izolácie:
- Read Uncommitted (Čítanie nekomitovaných údajov): Najnižšia úroveň. Transakcia môže čítať nekomitované zmeny iných transakcií (až po "špinavé" čítanie).
- Read Committed (Čítanie komitovaných údajov): Transakcia môže čítať iba údaje, ktoré boli komitované inými transakciami. Vyhýba sa "špinavému" čítaniu.
- Repeatable Read (Opakovateľné čítanie): Transakcia garantuje, že údaje, prečítané počas transakcie, sa pri opakovanom čítaní nezmenia. Vyhýba sa "špinavému" a "neopakovateľnému" čítaniu. Môžu sa vyskytnúť "fantomové" zmeny.
- Serializable (Serializovateľné): Najvyššia úroveň izolácie. Zaručuje, že paralelné transakcie sa vykonávajú tak, akoby boli vykonané sekvenčne. Vyhýba sa všetkým typom neželaných javov: "špinavému" čítaniu, "neopakovateľnému" čítaniu a "fantomovým" zmenám.
Nežiaduce javy pri paralelnom vykonávaní transakcií:
- Dirty Read (Špinavé čítanie): Transakcia A číta údaje, ktoré boli modifikované transakciou B, ktorá ešte nebola komitovaná. Ak transakcia B vráti zmeny, transakcia A bude pracovať s nesprávnymi údajmi.
- Non-repeatable Read (Nepopakovateľné čítanie): Transakcia A číta tie isté údaje dvakrát, ale medzi čítaniami transakcia B mení tieto údaje. Výsledkom je, že transakcia A dostane odlišné hodnoty pri opakovaných čítaniach.
- Phantom Read (Fantomové čítanie): Transakcia A vykonáva dopyt, ktorý vráti súbor riadkov. Transakcia B pridáva alebo odstraňuje riadky, ktoré zodpovedajú kritériám dopytu A. Pri opakovanom vykonaní toho istého dopytu transakcia A dostane iný súbor riadkov.
Prehľadná tabuľka neželaných javov podľa úrovní izolácie:
| Úroveň izolácie | Špinavé čítanie | Nepopakovateľné čítanie | Fantómy |
|---|---|---|---|
| Read Uncommitted | Áno | Áno | Áno |
| Read Committed | Nie | Áno | Áno |
| Repeatable Read | Nie | Nie | Áno |
| Serializable | Nie | Nie | Nie |
Výber úrovne izolácie ovplyvňuje výkon a správnosť práce aplikácie. Čím vyššia je úroveň izolácie, tým sú vyššie náklady.