Middle
Koja je postojeća klasifikacija nivoa izolacije?
sobes.tech АИ
Одговор од АИ
Nivoi izolacije u bazama podataka određuju koliko su transakcije izolovane jedna od druge i od promena koje su izvršile druge transakcije. Oni sprečavaju razne probleme sa paralelnim pristupom.
Klasifikacija nivoa izolacije (SQL standard):
- READ UNCOMMITTED
- Dozvoljava čitanje nepotvrđenih promena (prljavo čitanje / dirty read).
- Problemi: prljavo čitanje, neponovljivo čitanje, fantomsko čitanje.
- READ COMMITTED
- Dozvoljava čitanje samo potvrđenih promena.
- Zabranjuje prljavo čitanje.
- Problemi: neponovljivo čitanje, fantomsko čitanje.
- Podrazumevano najčešće korišćeni nivo.
- REPEATABLE READ
- Garantuje da će ponovljeno čitanje istog skupa redova u jednoj transakciji vratiti iste podatke, čak i ako ih druge transakcije menjaju.
- Zabranjuje prljavo čitanje i neponovljivo čitanje.
- Problem: fantomsko čitanje (pojavljivanje novih redova koji zadovoljavaju uslov izbora).
- SERIALIZABLE
- Najviši nivo izolacije.
- Garantuje potpunu odsutnost problema sa paralelnim pristupom. Transakcije se izvršavaju kao da se izvršavaju sekvencijalno.
- Zabranjuje prljavo čitanje, neponovljivo čitanje i fantomsko čitanje.
- Može značajno uticati na performanse.
Problemi paralelnog pristupa:
| Problem | READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE |
|---|---|---|---|---|
| Prljavo čitanje | Da | Ne | Ne | Ne |
| Neponovljivo čitanje | Da | Da | Ne | Ne |
| Fantomsko čitanje | Da | Da | Da | Ne |
Izbor nivoa izolacije zavisi od zahteva aplikacije i kompromisa između integriteta podataka i performansi.