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:
- T1 transakcija izpilda vaicājumu
SELECT * FROM orders WHERE status = 'new'un saņem 5 ierakstus. - Kamēr T1 nav pabeigta, cita T2 transakcija pievieno jaunu ierakstu ar
status = 'new'un apstiprina izmaiņas. - 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.