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;