Junior — Middle
Puteți explica ce înseamnă fenomenul de citire fantomă în contextul tranzacțiilor?
sobes.tech AI
Răspuns de la AI
Fenomenul de citire fantomă apare în contextul tranzacțiilor bazei de date, atunci când o interogare repetată în cadrul aceleiași tranzacții returnează rezultate diferite din cauza faptului că o altă tranzacție a adăugat sau eliminat rânduri care corespund condiției de selecție.
De exemplu, dacă în prima parte a tranzacției am selectat toate înregistrările cu o anumită condiție, iar apoi în a doua parte am repetat aceeași interogare, pot apărea rânduri noi (fantome) care nu erau vizibile la prima citire din cauza modificărilor paralele în bază.
Acest lucru este legat de nivelul de izolare al tranzacțiilor: citirea fantomă este posibilă la nivelul READ COMMITTED, dar este prevenită la nivelul SERIALIZABLE.
Exemplu:
-- Tranzacție 1
BEGIN;
SELECT * FROM orders WHERE status = 'pending'; -- a returnat 5 înregistrări
-- Tranzacție 2 adaugă în paralel o înregistrare nouă cu status = 'pending'
SELECT * FROM orders WHERE status = 'pending'; -- acum va returna 6 înregistrări
COMMIT;