मैंने लेनदेन के लिए एक धारावाहिक लेनदेन अलगाव लॉक सेट किया है। लेकिन मैं कुछ ऐसे परिणाम देख रहा हूं जिनकी अपेक्षा नहीं है।धारावाहिक लेनदेन अलगाव लॉक
मेरे क्वेरी
update tabl1 set col2 = 10 where col1 > 10 and col1 < 20
यहाँ है col1 col1 मूल्य 10,11,12 .... 19,20 होने के साथ प्राथमिक key.Here पंक्तियों अद्यतन/डालने के लिए बंद कर दिया जाता है। जहां स्थिति में मैंने col1> 10 और col1 < 20 के रूप में स्थितियां दी हैं, लेकिन अभी भी col1 = 10 और col1 = 20 होने वाली पंक्तियां लॉक हो गई हैं।
तो मैं दे
update tabl1 set col2 = 10 where col1 => 10 and col1 <= 20
तो 9 से 21 के col2 होने मूल्यों के साथ पंक्तियों हो जाता है locked.So क्यों col1 होने 9 और 21 यहाँ बंद कर दिया जाता है?
नीचे दी गई क्वेरी के लिए पूर्ण तालिका लॉक हो जाती है। यहां col3 एक गैर-प्राथमिक स्तंभ है। क्या मैं लॉक सेट नहीं कर सकता हूं, जहां कॉलम प्राथमिक स्थिति नहीं है?
update tabl1 set col2 = 10 where col3 > 10 and col3 < 20
हैं लेकिन जो सूचकांक? इस्तेमाल किया जाना चाहिए क्लस्टर किया गया या गैर क्लस्टर? – wincoding
@wincoding - इससे कोई फर्क नहीं पड़ता SQL सर्वर तब तक कुंजी रेंज लॉक ले सकता है जब तक कि वह 'WHERE' को हल करने के लिए उस अनुक्रमणिका का उपयोग करता है –