Aké úrovne izolácie transakcií existujú v SQL?
sobes.tech AI
Odpoveď od AI
Úrovne izolácie transakcií v SQL určujú stupeň ochrany dát pred paralelnými transakciami. Ovplyvňujú možné problémy: špinavé čítanie, nevratné čítanie a fantómové čítanie.
Štandard SQL definuje štyri úrovne izolácie:
-
Read Uncommitted: Najnižšia úroveň. Transakcia môže čítať neoverené (špinavé) údaje iných transakcií.
- Umožňuje: špinavé čítanie, nevratné čítanie, fantómové čítanie.
-
Read Committed: Transakcia môže čítať iba overené údaje. Nie je problém s špinavým čítaním.
- Umožňuje: nevratné čítanie, fantómové čítanie.
-
Repeatable Read: Transakcia garantuje, že pri opakovanom čítaní uvidí rovnaké údaje. Dáta načítané v rámci transakcie nemôžu byť zmenené alebo vymazané inou transakciou do jej ukončenia.
- Umožňuje: fantómové čítanie.
-
Serializable: Najvyššia úroveň. Transakcie sa vykonávajú sekvenčne, akoby pracovali jedna za druhou. Úplne zabraňuje všetkým vyššie uvedeným problémom.
Tabuľka zhrnutia problémov a úrovní izolácie:
| Problém | Read Uncommitted | Read Committed | Repeatable Read | Serializable |
|---|---|---|---|---|
| Špinavé čítanie | Možné | Nemožné | Nemožné | Nemožné |
| Nevratné čítanie | Možné | Možné | Nemožné | Nemožné |
| Fantómové čítanie | Možné | Možné | Možné | Nemožné |
Výber úrovne izolácie závisí od požiadaviek aplikácie na konzistenciu dát a výkon. Vyššie úrovne zabezpečujú väčšiu integritu, ale môžu znižovať výkon kvôli zvýšenému blokovaniu. Predvolená úroveň často závisí od systému správy databáz (napríklad v PostgreSQL a Oracle je to Read Committed, v MySQL je to Repeatable Read).