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