Middle
Kokia yra esama izoliacijos lygių klasifikacija?
sobes.tech AI
Atsakymas iš AI
Duomenų bazių izoliacijos lygiai nustato, kiek transakcijos yra izoliuotos viena nuo kitos ir nuo kitų transakcijų atliktų pakeitimų. Jie užkerta kelią įvairioms paralelinio prieigos problemoms:
SQL standarto izoliacijos lygių klasifikacija:
- READ UNCOMMITTED
- leidžia skaityti nepatvirtintus pakeitimus (šiukšlinas skaitymas / dirty read):
- problemos: šiukšlinas skaitymas, kartotinas skaitymas, vaiduoklių skaitymas:
- READ COMMITTED
- leidžia skaityti tik patvirtintus pakeitimus:
- draudžia šiukšliną skaitymą:
- problemos: kartotinas skaitymas, vaiduoklių skaitymas:
- dažniausiai naudojamas lygis:
- REPEATABLE READ
- garantuoja, kad pakartotinai skaitant tą pačią eilučių grupę, gausite tas pačias duomenis, net jei kitos transakcijos jas keičia:
- draudžia šiukšliną skaitymą ir kartotiną skaitymą:
- problema: vaiduoklių skaitymas (naujos eilutės, atitinkančios pasirinkimo sąlygą):
- SERIALIZABLE
- aukščiausias izoliacijos lygis:
- užtikrina visišką nepraleidžiamumą paraleliniam prieigai:
- transakcijos vykdomos taip, tarsi jos būtų vykdomos nuosekliai:
- draudžia šiukšliną skaitymą, kartotiną skaitymą ir vaiduoklių skaitymą:
- gali turėti reikšmingą poveikį našumui:
Paralelios prieigos problemos:
| Problema | READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE |
|---|---|---|---|---|
| Šiukšlinas skaitymas | Taip | Ne | Ne | Ne |
| Kartotinas skaitymas | Taip | Taip | Ne | Ne |
| Vaiduoklių skaitymas | Taip | Taip | Taip | Ne |
Pasirinkimas izoliacijos lygio priklauso nuo programos reikalavimų ir kompromiso tarp duomenų vientisumo ir našumo.