Junior — Middle
Ați putea explica ce înseamnă Phantom read în contextul tranzacțiilor și bazelor de date?
sobes.tech AI
Răspuns de la AI
Citirea fantomă este o situație în tranzacții în care, la executarea repetată a aceleiași interogări în cadrul unei tranzacții, apar noi rânduri care nu au fost vizibile la prima citire.
Exemplu:
- Tranzacția T1 execută interogarea
SELECT * FROM orders WHERE status = 'new'și primește 5 înregistrări. - În timp ce T1 nu s-a încheiat, o altă tranzacție T2 adaugă o înregistrare nouă cu
status = 'new'și confirmă modificările. - Dacă T1 repetă aceeași interogare, va vedea deja 6 înregistrări — noua linie apărută ca "fantomă".
Citirea fantomă apare deoarece intervalul de rânduri care corespund condiției interogării s-a schimbat între cele două citiri.
Pentru a evita citirea fantomă, se utilizează nivelul de izolare SERIALIZABLE, care blochează intervalele de date, prevenind apariția de noi rânduri între citiri. La nivelurile READ COMMITTED sau REPEATABLE READ, pot apărea fantome.