Junior — Middle
შეგიძლიათ ახსნათ, რა იგულისხმება Phantom read-ის შესახებ ტრანზაქციებისა და მონაცემთა ბაზების კონტექსტში?
sobes.tech AI
პასუხი AI-სგან
ფანტომური კითხვა — ეს არის სიტუაცია ტრანზაქციებში, როდესაც იგივე შეკვეთა მეორედ შესრულებისას, ახალი სვეტები გამოჩნდება, რომლებიც პირველ კითხვაზე არ იყო გამოჩენილი.
მაგალითი:
- T1 ტრანზაქცია ახორციელებს შეკითხვას
SELECT * FROM orders WHERE status = 'new'და იღებს 5 ჩანაწერს. - სანამ T1 დასრულდება, სხვა T2 ტრანზაქცია დამატებს ახალ ჩანაწერს
status = 'new'და ადასტურებს ცვლილებებს. - თუ T1 განმეორებით შეასრულებს იგივე შეკითხვას, ის უკვე ნახავს 6 ჩანაწერს — ახალი სვეტი გამოჩნდება როგორც "ფანტომი".
ფანტომური კითხვა ხდება, რადგან შეკვეთის პირობებს პასუხობარე სვეტების დიაპაზონი შეიცვალა ორ კითხვას შორის.
ფანტომური კითხვების თავიდან ასაცილებლად გამოიყენება SERIALIZABLE იზოლაციის დონე, რომელიც ბლოკავს მონაცემთა დიაპაზონებს და აცილებს ახალი სვეტების გამოჩენას კითხვებს შორის. READ COMMITTED ან REPEATABLE READ დონეებზე, ფანტომები შეიძლება წარმოიშვას.