Phantom Read (Fantom oxunuşu) — verilənlər bazalarında baş verə biləcək xüsusi bir anomaliya növüdür və bu, adətən çoxsaylı əməliyyatlar (transactions) eyni vaxtda işləyərkən müşahidə olunur. Bu hadisə tranzaksiyanın müəyyən şərtə uyğun olan məlumatları oxuduğu zaman, həmin şərtə uyğun yeni məlumatların digər tranzaksiya tərəfindən əlavə olunması nəticəsində eyni sorğunun fərqli nəticələr qaytarması ilə xarakterizə olunur.
Tutaq ki, bir tranzaksiya müəyyən şərtə əsasən məlumatları sorğu edir (məsələn: SELECT * FROM müştərilər WHERE yaş > 25). Bu tranzaksiya eyni sorğunu prosesin əvvəlində və sonunda edərsə və bu iki nəticə fərqlidirsə, bu zaman "phantom read" baş verir. Bu fərq, başqa bir tranzaksiyanın həmin kriteriyaya uyğun yeni sətrləri əlavə etməsi və ya mövcudları dəyişməsi səbəbindən ola bilər.
Beləliklə, Tranzaksiya A eyni sorğunu iki dəfə edərkən fərqli nəticələr alır — bu da phantom read hadisəsidir.
Phantom read, aşağı səviyyəli izolyasiya rejimlərində (məsələn, Read Committed və ya Repeatable Read) baş verə bilər. Onun qarşısını almaq üçün ən yüksək izolyasiya səviyyəsi olan Serializable istifadə olunur. Bu rejimdə verilənlər bazası tranzaksiyaların sanki sıralı şəkildə işlədiyini təmin edir və beləliklə, yeni sətrin əlavə olunması bloklanır və ya gecikdirilir.
IT sahəsini dərindən öyrənmək üçün kurslarımıza qoşulun. Ətraflı məlumat almaq üçün sorğu göndərin!