Sobes.tech
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:

  1. T1 transaktsioon teeb päringu SELECT * FROM orders WHERE status = 'new' ja saab 5 kirjet.
  2. Kui T1 ei ole lõpetatud, lisab teine T2 uue kirje koos status = 'new' ja kinnitab muudatused.
  3. 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.