Sobes.tech
Junior — Middle

Můžete vysvětlit, co se rozumí fenoménem fantomového čtení v kontextu transakcí?

sobes.tech AI

Odpověď od AI

Fenomen fantomového čtení se vyskytuje v kontextu databázových transakcí, když opakovaný dotaz ve stejné transakci vrací odlišné výsledky kvůli tomu, že jiná transakce přidala nebo odstranila řádky odpovídající podmínce výběru.

Například, pokud v první části transakce vybereme všechny záznamy s určitým podmínkou, a poté ve druhé části opakujeme tentýž dotaz, mohou se objevit nové řádky (fantomy), které při prvním čtení nebyly viditelné kvůli paralelním změnám v databázi.

To je spojeno s úrovní izolace transakcí: fantomové čtení je možné na úrovni READ COMMITTED, ale je zabráněno na úrovni SERIALIZABLE.

Příklad:

-- Transakce 1
BEGIN;
SELECT * FROM orders WHERE status = 'pending'; -- vrátilo 5 záznamů
-- Transakce 2 paralelně přidává nový záznam se stavem 'pending'
SELECT * FROM orders WHERE status = 'pending'; -- nyní vrátí 6 záznamů
COMMIT;