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;