Sobes.tech
Junior — Middle

El tudná magyarázni, hogy mit értünk Phantom read alatt tranzakciók és adatbázisok kontextusában?

sobes.tech MI

Válasz az MI-től

Fantom olvasás — ez egy olyan helyzet az tranzakciókban, amikor ugyanazt a lekérdezést ismételten végrehajtva egy tranzakción belül új sorok jelennek meg, amelyek az első olvasáskor nem voltak láthatók.

Példa:

  1. T1 tranzakció végrehajtja a SELECT * FROM orders WHERE status = 'new' lekérdezést, és 5 rekordot kap.
  2. Amíg T1 nem fejeződik be, egy másik T2 tranzakció új rekordot ad hozzá status = 'new'-val, és megerősíti a változtatásokat.
  3. Ha T1 megismétli ugyanazt a lekérdezést, már 6 rekordot fog látni — az új sor "fantomként" jelenik meg.

A fantom olvasás akkor fordul elő, mert a feltételnek megfelelő sorok tartománya megváltozott a két olvasás között.

A fantom olvasás elkerülése érdekében az SERIALIZABLE izolációs szintet használják, amely blokkolja az adat tartományokat, megakadályozva az új sorok megjelenését az olvasások között. A READ COMMITTED vagy REPEATABLE READ szinteken fantomok fordulhatnak elő.