Junior — Middle
Mohol by ste vysvetliť, čo sa rozumie pod Phantom read v kontexte transakcií a databáz?
sobes.tech AI
Odpoveď od AI
Fantomové čítanie je situácia v transakciách, keď pri opakovanom vykonávaní rovnakej otázky v rámci jednej transakcie sa objavia nové riadky, ktoré pri prvom čítaní neboli viditeľné.
Príklad:
- Transakcia T1 vykonáva otázku
SELECT * FROM orders WHERE status = 'new'a získa 5 záznamov. - Kým T1 nie je ukončená, iná transakcia T2 pridá nový záznam s
status = 'new'a potvrdí zmeny. - Ak T1 zopakuje tú istú otázku, uvidí už 6 záznamov — nový riadok sa objavil ako "fantóm".
Fantomové čítanie nastáva, pretože rozsah riadkov, ktoré vyhovujú podmienke otázky, sa medzi dvoma čítaniami zmenil.
Aby sa zabránilo fantómovému čítaniu, používa sa úroveň izolácie SERIALIZABLE, ktorá blokuje rozsahy dát a zabraňuje vzniku nových riadkov medzi čítaniami. Na úrovniach READ COMMITTED alebo REPEATABLE READ môžu fantómy vzniknúť.