Junior — Middle
Kas saaksite selgitada, mida mõistetakse Phantom read'ina transaktsioonide ja andmebaaside kontekstis?
sobes.tech AI
Vastus AI-lt
Fantomilugemine — see on olukord transaktsioonides, kus sama päringut korratakse ühe transaktsiooni jooksul ning ilmuvad uued read, mis esialgse lugemise ajal ei olnud nähtavad.
Näide:
- T1 transaktsioon teeb päringu
SELECT * FROM orders WHERE status = 'new'ja saab 5 kirjet. - Kui T1 ei ole lõpetatud, lisab teine T2 uue kirje koos
status = 'new'ja kinnitab muudatused. - Kui T1 kordab sama päringut, näeb ta juba 6 kirjet — uus rida ilmub kui "fantom".
Fantomilugemine tekib, kuna päringu tingimustele vastavate ridade vahemik on kahe lugemise vahel muutunud.
Fantomilugemise vältimiseks kasutatakse SERIALIZABLE eraldusastet, mis blokeerib andmevahemikke ning takistab uute ridade ilmumist lugemiste vahel. Nivell READ COMMITTED või REPEATABLE READ võivad fantome esineda.