Sobes.tech
Junior — Middle

Kunt u uitleggen wat het fenomeen van ghost reading inhoudt in de context van transacties?

sobes.tech AI

Antwoord van AI

Het fenomeen van phantom reading doet zich voor in de context van database-transacties, wanneer een herhaalde query binnen dezelfde transactie verschillende resultaten oplevert omdat een andere transactie rijen heeft toegevoegd of verwijderd die voldoen aan de selectievoorwaarde.

Bijvoorbeeld, als in het eerste deel van een transactie alle records met een bepaalde voorwaarde zijn geselecteerd, en vervolgens in het tweede deel dezelfde query wordt herhaald, kunnen nieuwe rijen (fantomen) verschijnen die bij de eerste lezing niet zichtbaar waren vanwege parallelle wijzigingen in de database.

Dit hangt samen met het isolatieniveau van transacties: phantom reading is mogelijk bij READ COMMITTED, maar wordt voorkomen bij SERIALIZABLE.

Voorbeeld:

-- Transactie 1
BEGIN;
SELECT * FROM orders WHERE status = 'pending'; -- retourneerde 5 records
-- Transactie 2 voegt parallel een nieuw record toe met status = 'pending'
SELECT * FROM orders WHERE status = 'pending'; -- zal nu 6 records retourneren
COMMIT;