WHY yeh non-repeatable se alag hai: Non-repeatable = ek existing row ki value change hui. Phantom = result set ki membership change hui (naye "phantom" rows appear hote hain).
Recall Feynman: ek 12-saal ke bachche ko explain karo
Socho tum apne dost ka homework answer copy kar rahe ho.
Dirty read: tumne ek aisa answer copy kiya jo unhone pencil se likha tha aur phir erase kar diya — ab tumhara answer kisi aisi cheez par based hai jo mita di gayi. (uncommitted data, rolled back)
Non-repeatable read: tum question 3 ka answer dekhte ho, nazar hatate ho, phir dekhte ho, aur unhone use badal diya. Same question, naya answer. (ek row ki value change hui)
Phantom read: tum "page par 5 questions hain" count karte ho, phir dobara dekhte ho, aur ek naya question jaadu se aa gaya jisse 6 ho gaye. (ek nai row tumhare result mein aa gayi)
Librarian (database) strict ho sakta hai (poora page lock karo taaki kuch change na ho — slow but safe) ya chill (cheezein change hone do — fast but glitchy). Aap choose karte ho kitna strict hona hai.
T1 ek aisi row padhta hai jo T2 ne modify ki hai lekin commit nahi ki; agar T2 roll back kare, toh T1 ne ek aisi value padhi jo kabhi officially exist hi nahi ki.
Non-repeatable read kya hota hai?
T1wahi row do baar padhta hai aur alag values milti hain kyunki T2 ne beech mein ek UPDATE commit kar diya.
Phantom read kya hota hai?
T1 wahi range query do baar chalata hai aur alag set of rows milti hai kyunki T2 ne condition se match karne wali INSERT/DELETE commit kar di.
Key difference: non-repeatable vs phantom?
Non-repeatable = ek existing row ki value change hui (UPDATE). Phantom = matching rows ka set change hua (INSERT/DELETE).
Kaunsa isolation level dirty reads prevent karta hai lekin non-repeatable reads allow karta hai?
Read Committed.
Kaunsa isolation level non-repeatable reads prevent karta hai lekin (SQL standard ke hisaab se) phantoms allow kar sakta hai?
Repeatable Read.
Kaunsa isolation level teeno anomalies prevent karta hai?
Serializable.
Serializable har jagah kyun use nahi karte?
Yeh locking/aborts maximize karta hai, concurrency aur throughput kam karta hai aur deadlocks ka risk badhata hai; woh lowest level choose karo jo un anomalies ko forbid kare jinka tumhe care hai.
Phantoms rokne ke liye kis tarah ka lock chahiye?
Range / predicate (jaise next-key) locks, sirf row locks nahi.
Kya Read Committed guarantee karta hai ki ek hi row ke do reads match karenge?
Nahi — yeh sirf guarantee karta hai ki har read committed data dekhe, reads ke beech stability nahi.