हाल ही में हमारे ASP.NET अनुप्रयोगों में से एक ने डेटाबेस डेडलॉक त्रुटि प्रदर्शित की और मुझे त्रुटि की जांच करने और ठीक करने का अनुरोध किया गया। मैं गतिरोध का कारण खोजने में कामयाब रहा, एक संग्रहीत प्रक्रिया थी जो कड़ाई से एक कर्सर के भीतर एक तालिका को अपडेट कर रही थी।
यह पहली बार है जब मैंने यह त्रुटि देखी है और यह नहीं पता कि इसे कैसे ट्रैक किया जाए और इसे प्रभावी ढंग से ठीक किया जाए। मैंने उन सभी संभावित तरीकों की कोशिश की जो मुझे पता है, और अंत में पाया कि जिस टेबल को अपडेट किया जा रहा है, उसमें प्राथमिक कुंजी नहीं है! सौभाग्य से यह एक पहचान स्तंभ था।
मुझे बाद में डेवलपर मिला जिसने तैनाती के लिए डेटाबेस को गड़बड़ कर दिया। मैंने एक प्राथमिक कुंजी जोड़ी और समस्या हल हो गई।
मुझे खुशी हुई और मैं अपने प्रोजेक्ट पर वापस आ गया, और उस गतिरोध का कारण जानने के लिए कुछ शोध किया ...
जाहिर है, यह एक परिपत्र प्रतीक्षा स्थिति थी जो गतिरोध का कारण बनी। अपडेट प्राथमिक रूप से प्राथमिक कुंजी की तुलना में प्राथमिक कुंजी के बिना अधिक समय लेता है।
मुझे पता है कि यह एक अच्छी तरह से परिभाषित निष्कर्ष नहीं है, यही कारण है कि मैं यहां पोस्ट कर रहा हूं ...
- क्या लापता प्राथमिक समस्या है?
- क्या कोई अन्य शर्तें हैं जो गतिरोध के अलावा अन्य कारण हैं (आपसी बहिष्कार, पकड़ और प्रतीक्षा, कोई पूर्व भुगतान और परिपत्र प्रतीक्षा)?
- मैं गतिरोध को कैसे रोकूं और ट्रैक करूं?