Junior — Middle
Можете ли објаснити шта подразумева феномен фантомног читања у контексту трансакција?
sobes.tech АИ
Одговор од АИ
Fenomen fantomnog čitanja javlja se u kontekstu baza podataka, kada ponovljeni upit unutar iste transakcije vraća različite rezultate zbog toga što je druga transakcija dodala ili uklonila redove koji odgovaraju uslovima izbora.
Na primer, ako smo u prvom delu transakcije izabrali sve zapise sa određenim uslovom, a zatim u drugom delu ponovili isti upit, mogu se pojaviti novi redovi (fantomi) koji nisu bili vidljivi pri prvom čitanju zbog paralelnih promena u bazi.
Ovo je povezano sa nivoom izolacije transakcija: fantomsko čitanje je moguće na nivou READ COMMITTED, ali je sprečeno na nivou SERIALIZABLE.
Primer:
-- Transakcija 1
BEGIN;
SELECT * FROM orders WHERE status = 'pending'; -- vratio je 5 zapisa
-- Transakcija 2 paralelno dodaje novi zapis sa statusom 'pending'
SELECT * FROM orders WHERE status = 'pending'; -- sada će vratiti 6 zapisa
COMMIT;