Junior — Middle
Czy możesz wyjaśnić, na czym polega zjawisko czytania phantomowego w kontekście transakcji?
sobes.tech AI
Odpowiedź od AI
Zjawisko phantom reads występuje w kontekście transakcji baz danych, gdy w ramach jednej transakcji powtarzające się zapytanie do danych zwraca różne wyniki z powodu dodania lub usunięcia wierszy spełniających warunek wyboru przez inną transakcję.
Na przykład, jeśli w pierwszej części transakcji wybraliśmy wszystkie rekordy z określonym warunkiem, a następnie w drugiej części powtórzyliśmy to samo zapytanie, mogą pojawić się nowe wiersze (phantomy), które nie były widoczne podczas pierwszego odczytu z powodu równoległych zmian w bazie.
To jest związane z poziomem izolacji transakcji: phantom reads są możliwe na poziomie READ COMMITTED, ale są zapobiegane na poziomie SERIALIZABLE.
Przykład:
-- Transakcja 1
BEGIN;
SELECT * FROM orders WHERE status = 'pending'; -- zwróciło 5 rekordów
-- Transakcja 2 równolegle dodaje nowy rekord z status = 'pending'
SELECT * FROM orders WHERE status = 'pending'; -- teraz zwróci 6 rekordów
COMMIT;