91
GB
What is the phantom problem in predicate-based concurrency control and why is row-level locking insufficient?
IN
विधेय-आधारित समवर्ती नियंत्रण में प्रेत समस्या क्या है और पंक्ति-स्तरीय लॉकिंग अपर्याप्त क्यों है?
A
A problem with index corruption during concurrent access
समवर्ती पहुंच के दौरान सूचकांक भ्रष्टाचार की समस्या
B
A problem specific to aggregate queries only
केवल समग्र प्रश्नों के लिए विशिष्ट समस्या
C
A problem with deleted rows appearing in queries
क्वेरीज़ में दिखाई देने वाली हटाई गई पंक्तियों के साथ एक समस्या
D
New rows satisfying a predicate can be inserted by other transactions after the predicate is evaluated causing re-evaluation to return different rows - row-level locking cannot prevent this because the new rows do not exist yet when locks are acquired (cannot lock non-existent rows)
विधेय को संतुष्ट करने वाली नई पंक्तियों को विधेय के मूल्यांकन के बाद अन्य लेनदेन द्वारा डाला जा सकता है, जिससे पुनर्मूल्यांकन अलग-अलग पंक्तियों को वापस कर सकता है - पंक्ति-स्तरीय लॉकिंग इसे रोक नहीं सकती है क्योंकि ताले प्राप्त होने पर नई पंक्तियाँ अभी तक मौजूद नहीं हैं (गैर-मौजूद पंक्तियों को लॉक नहीं किया जा सकता है)
✅ Correct Answer:
💡 Explanation / व्याख्या
Explanation (English)
Phantom problem: T1 locks all existing rows WHERE salary>50K (say 10 rows). T2 inserts a new row with salary=60K (no row lock exists for it yet - it is a new row). T1 re-queries and sees 11 rows. Row-level locks only lock EXISTING rows. Must use predicate/gap locks to prevent insertions matching the predicate.
व्याख्या (हिन्दी)
प्रेत समस्या: T1 सभी मौजूदा पंक्तियों को लॉक कर देता है जहां वेतन>50K (मान लीजिए 10 पंक्तियाँ) है। T2 वेतन=60K के साथ एक नई पंक्ति सम्मिलित करता है (इसके लिए अभी तक कोई पंक्ति लॉक मौजूद नहीं है - यह एक नई पंक्ति है)। T1 पुनः प्रश्न करता है और 11 पंक्तियाँ देखता है। पंक्ति-स्तरीय ताले केवल मौजूदा पंक्तियों को लॉक करते हैं। विधेय से मेल खाने वाले सम्मिलनों को रोकने के लिए विधेय/गैप लॉक का उपयोग करना चाहिए।