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

  1. Tranzacția T1 execută interogarea SELECT * FROM orders WHERE status = 'new' și primește 5 înregistrări.
  2. În timp ce T1 nu s-a încheiat, o altă tranzacție T2 adaugă o înregistrare nouă cu status = 'new' și confirmă modificările.
  3. 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.