Sobes.tech
Junior — Middle

Vai jūs varat izskaidrot, kas ir fenomens fanotiska lasīšana transakciju kontekstā?

sobes.tech AI

Atbilde no AI

Fenomens, ko dēvē par fantoma lasīšanu, rodas datu bāzes transakciju kontekstā, kad atkārtots vaicājums tajā pašā transakcijā sniedz dažādus rezultātus, jo cita transakcija ir pievienojusi vai dzēsusi rindas, kas atbilst atlases nosacījumam.

Piemēram, ja pirmajā transakcijas daļā mēs izvēlējāmies visas ierakstu ar noteiktu nosacījumu, un pēc tam otrajā daļā atkārtojām to pašu vaicājumu, var parādīties jaunas rindas (fantomas), kas pirmajā lasījumā nebija redzamas, paralēlo izmaiņu dēļ datu bāzē.

Tas ir saistīts ar transakciju izolācijas līmeni: fantoma lasīšana ir iespējama READ COMMITTED līmenī, bet tiek novērsta SERIALIZABLE līmenī.

Piemērs:

-- Transakcija 1
BEGIN;
SELECT * FROM orders WHERE status = 'pending'; -- atgrieza 5 ierakstus
-- Transakcija 2 paralēli pievieno jaunu ierakstu ar statusu 'pending'
SELECT * FROM orders WHERE status = 'pending'; -- tagad atgriezīs 6 ierakstus
COMMIT;