Junior — Middle
Kas saaksite selgitada, mida tähendab fenomeen vaimne lugemine transaktsioonide kontekstis?
sobes.tech AI
Vastus AI-lt
Fenomen, mida nimetatakse vaimseks lugemiseks, tekib andmebaasi transaktsioonide kontekstis, kui sama transaktsiooni jooksul korduv päring tagastab erinevaid tulemusi, kuna teine transaktsioon on lisanud või eemaldanud read, mis vastavad valiku tingimusele.
Näiteks, kui esimeses transaktsiooni osas valisime kõik kirjed teatud tingimusega, ja seejärel teises osas kordasime sama päringut, võivad ilmuda uued read (vaimud), mis esimesel lugemisel ei olnud nähtavad, paralleelsete muudatuste tõttu andmebaasis.
See on seotud transaktsioonide isoleerimistasemega: vaimse lugemise võimalus on READ COMMITTED tasemel, kuid seda ennetatakse SERIALIZABLE tasemel.
Näide:
-- Transaktsioon 1
BEGIN;
SELECT * FROM orders WHERE status = 'pending'; -- tagastas 5 kirjet
-- Transaktsioon 2 lisab paralleelselt uue kirje, mille staatus on 'pending'
SELECT * FROM orders WHERE status = 'pending'; -- nüüd tagastab 6 kirjet
COMMIT;