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:
- T1 tranzakció végrehajtja a
SELECT * FROM orders WHERE status = 'new'lekérdezést, és 5 rekordot kap. - 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. - 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ő.