Sobes.tech
Junior — Middle

El tudná magyarázni, hogy mit értünk a fantom olvasás jelensége alatt a tranzakciók kontextusában?

sobes.tech MI

Válasz az MI-től

A fantom olvasás jelensége adatbázis tranzakciók kontextusában fordul elő, amikor ugyanazon tranzakción belül ismételt lekérdezés különböző eredményeket ad, mert egy másik tranzakció hozzáadott vagy törölt olyan sorokat, amelyek megfelelnek a kiválasztási feltételnek.

Például, ha az első részben egy tranzakcióban minden egyes rekordot kiválasztottunk egy adott feltétellel, majd a második részben ugyanazt a lekérdezést ismételjük, új sorok (fantomok) jelenhetnek meg, amelyek az első olvasáskor nem voltak láthatók a párhuzamos változtatások miatt.

Ez a tranzakciók izolációs szintjével kapcsolatos: a fantom olvasás a READ COMMITTED szinten lehetséges, de a SERIALIZABLE szinten megakadályozott.

Példa:

-- Tranzakció 1
BEGIN;
SELECT * FROM orders WHERE status = 'pending'; -- 5 rekordot adott vissza
-- A tranzakció 2 párhuzamosan hozzáad egy új rekordot, amelynek státusza 'pending'
SELECT * FROM orders WHERE status = 'pending'; -- most már 6 rekordot ad vissza
COMMIT;