Sobes.tech
Junior — Middle

Vai jūs varētu izskaidrot, kas ir Phantom read transakciju un datu bāzu kontekstā?

sobes.tech AI

Atbilde no AI

Fantomlasīšana — tas ir situācija transakcijās, kad atkārtoti izpildot to pašu vaicājumu vienā transakcijā, parādās jaunas rindas, kas nebija redzamas pirmajā lasījumā.

Piemērs:

  1. T1 transakcija izpilda vaicājumu SELECT * FROM orders WHERE status = 'new' un saņem 5 ierakstus.
  2. Kamēr T1 nav pabeigta, cita T2 transakcija pievieno jaunu ierakstu ar status = 'new' un apstiprina izmaiņas.
  3. Ja T1 atkārtoti izpilda to pašu vaicājumu, tas jau redzēs 6 ierakstus — jauna rinda parādījās kā "fantoms".

Fantomlasīšana notiek tāpēc, ka vaicājuma nosacījumiem atbilstošo rindu diapazons ir mainījies starp abiem lasījumiem.

Lai novērstu fantomlasīšanu, tiek izmantots SERIALIZABLE izolācijas līmenis, kas bloķē datu diapazonus un novērš jaunu rindu parādīšanos starp lasījumiem. Niveliem READ COMMITTED vai REPEATABLE READ, fantomi var parādīties.