2010-05-11 31 views
5

मेरे पास अपडेट (यू) ताले और एक्सक्लूसिव (एक्स) ताले से संबंधित कुछ प्रश्न हैं।लॉक प्रश्न - 'यू' लॉक बनाम 'एक्स' लॉक

1) क्या मैं सही हूं कि जब संसाधन अपडेट होने वाला है तो संसाधन पर 'एक्स' लॉक लगाया जाता है?

2) मैं यू ताले पर थोड़ा अस्पष्ट हूं। क्या मैं सही हूं कि एक संसाधन को पढ़े जाने पर एक यू लॉक लागू होता है और SQL सर्वर सोचता है कि इसे बाद में संसाधन को अपडेट करने की आवश्यकता हो सकती है? यदि यह सही है, तो क्या एक 'यू' लॉक केवल तभी लागू होगा जब लेनदेन के संदर्भ में पढ़ा जा रहा हो? मुझे लगता है कि मैं समझने की कोशिश कर रहा हूं कि किस परिस्थिति में SQL सर्वर सोचता है कि इसे बाद में एक पंक्ति को अपडेट करने की आवश्यकता हो सकती है जिसे अभी पढ़ा गया है।

धन्यवाद - रैंडी

उत्तर

4

1) मैं सही है कि एक 'एक्स' ताला एक संसाधन पर डाल दिया जाता है जब संसाधन अपडेट होने की बारे में है?

हां।

2) मैं यू ताले पर थोड़ा अस्पष्ट हूं। क्या मैं सही हूं कि एक संसाधन को पढ़े जाने पर एक यू लॉक लागू होता है और SQL सर्वर सोचता है कि इसे बाद में संसाधन को अपडेट करने की आवश्यकता हो सकती है? यदि यह सही है, तो क्या एक 'यू' लॉक केवल तभी लागू होगा जब लेनदेन के संदर्भ में पढ़ा जा रहा हो? मुझे लगता है कि मैं समझने की कोशिश कर रहा हूं कि किस परिस्थिति में SQL सर्वर सोचता है कि इसे बाद में एक पंक्ति को अपडेट करने की आवश्यकता हो सकती है जिसे अभी पढ़ा गया है।

U ताले पढ़ने ताले लेकिन एक दूसरे के साथ नहीं के साथ संगत कर रहे हैं, X ताले भी पढ़ने ताले के साथ संगत नहीं हैं।

U ताले DML प्रश्नों (UPDATE, DELETE, MERGE), जबकि द्वारा रखा जाता है स्कैनिंग तालिका पंक्तियों, जबकि X ताले रखा जाता है जब निर्णय पंक्ति को अद्यतन करने के किया जाता है (अद्यतन करने के लिए अभी तक किया जाता है कोई निर्णय नहीं)।

READ COMMITTED अलगाव मोड में, रिकॉर्ड के मूल्यांकन के बाद लॉक को हटाया जाता है, क्योंकि उच्च अलगाव मोड में उन्हें लेनदेन के अंत तक रखा जाता है।

+0

@Quassnoi - मैं अभी भी 'यू' ताले पर थोड़ा उलझन में हूं। SQL सर्वर कैसे निर्धारित करता है कि एक पंक्ति जो अभी पढ़ी गई थी, भविष्य में अपडेट की जा सकती है? क्या ऐसा इसलिए है क्योंकि पढ़ना लेनदेन के संदर्भ में किया गया था? मैं यह निर्धारित करने की कोशिश कर रहा हूं कि कभी-कभी 'एस' लॉक के बजाय यू लॉक का उपयोग क्यों किया जाता है। –

+1

@ रैंडी: 'यू' ताले का उपयोग 'डीडीएल 'प्रश्नों के लिए किया जाता है (' अद्यतन', 'हटाएं ',' मर्ज ',' अद्यतन के लिए चयन करें ')। 'एस' ताले केवल पढ़ने के लिए पूछे जाने वाले प्रश्नों के लिए उपयोग किए जाते हैं (' SELECT') – Quassnoi

+0

@ रैंडी: – Quassnoi

संबंधित मुद्दे