Junior — Middle
შეგიძლიათ ახსნათ, რა იგულისხმება ფანტომური კითხვა მოვლენაში ტრანზაქციების კონტექსტში?
sobes.tech AI
პასუხი AI-სგან
ფანტომური კითხვა იჩენს თავს მონაცემთა ბაზის ტრანზაქციების კონტექსტში, როდესაც ერთ ტრანზაქციაში განმეორებითი სვეტი აჩვენებს განსხვავებულ შედეგებს, რადგან სხვა ტრანზაქციამ დაამატა ან წაშალა რიგები, რომლებიც შეესაბამება შერჩევის პირობას.
მაგალითად, თუ პირველ ნაწილში ტრანზაქციაში ჩვენ ავირჩიეთ ყველა ჩანაწერი გარკვეული პირობით, ხოლო შემდეგ მეორე ნაწილში იგივე სვეტი განმეორებით, შეიძლება გამოჩნდეს ახალი რიგები (ფანტომები), რომლებიც პირველ წაკითხვაში არ იყო გამოჩენილი პარალელური ცვლილებების გამო.
ეს დაკავშირებულია ტრანზაქციების იზოლაციის დონესთან: ფანტომური კითხვა შესაძლებელია READ COMMITTED დონეზე, მაგრამ თავიდან აცილებულია SERIALIZABLE დონეზე.
მაგალითი:
-- ტრანზაქცია 1
BEGIN;
SELECT * FROM orders WHERE status = 'pending'; -- დაბრუნდა 5 ჩანაწერი
-- ტრანზაქცია 2 პარალელურად დამატებს ახალ ჩანაწერს, სტატუსი 'pending'
SELECT * FROM orders WHERE status = 'pending'; -- ახლა დაბრუნდება 6 ჩანაწერი
COMMIT;