आइए कहें कि मैं एक लेनदेन खोलता हूं और अपडेट क्वेरी चलाता हूं।क्या मैं एक लेनदेन के भीतर एक प्रश्न निष्पादित नहीं कर रहा हूं, तो क्या मैं डेडलॉक पीड़ित हो सकता हूं?
BEGIN TRANSACTION
UPDATE x SET y = z WHERE w = v
क्वेरी सफलतापूर्वक वापस आती है और लेन-देन समय की अवधि के लिए जानबूझ कर खुला रहता है इससे पहले कि मैं प्रतिबद्ध करने के लिए निर्णय लेते हैं।
जबकि मैं लेनदेन पर बैठा हूं, यह संभव है कि एमएसएसक्यूएल डेडलॉक मशीनरी मेरे खुले लेनदेन को मुक्त करने में सक्षम हो, जो वास्तव में किसी डेडलॉक या मुक्त संसाधनों को साफ़ करने के लिए कुछ भी निष्पादित नहीं कर रही है क्योंकि सिस्टम मेमोरी/संसाधन सीमाएं पहुंच चुकी हैं ?
मुझे एसईटी डेडलॉक_PRIORITY के बारे में पता है और डेडलॉक्स के विषय पर एमएसडीएन लेख पढ़ चुके हैं। तर्कसंगत रूप से क्योंकि मैं सक्रिय रूप से किसी भी अतिरिक्त संसाधन पर दावा करने की मांग नहीं कर रहा हूं, मैं एक परिदृश्य की कल्पना नहीं कर सकता जो एक सैने डेडलॉक टावरेंस एल्गोरिदम को ट्रिगर करेगा।
क्या किसी को यह सुनिश्चित करने के लिए पता है कि क्या यह संभव है कि किसी भी ताले को पकड़ने से मुझे वैध लक्ष्य मिल सके? इसी प्रकार कोई भी कम संसाधन स्थिति मेरे एसपीआईडी की हत्या को ट्रिगर कर सकती है?
मुझे यकीन नहीं है (यही कारण है कि यह एक टिप्पणी है), लेकिन मुझे लगता है कि अगर आप केवल ताले के साथ लटक रहे हैं तो आपको डेडलॉक पीड़ित के रूप में चुना जाने की अधिक संभावना होगी (कम संभावना नहीं)। डेडलॉक्स तब होते हैं जब दो प्रक्रियाओं को एक ही संसाधन की आवश्यकता होती है और न ही हारने जा रही है। यदि आप ताले पकड़ रहे हैं तो आप अपनी प्रक्रिया के साथ डेडलॉक कर रहे हैं, कम नहीं। किस स्पिड पीड़ित है, मैंने कभी नहीं सुना है कि चयन प्रक्रिया यह उपयोगकर्ता स्तर पर निर्धारक है। किसी भी तरह से, जब आप ताले पकड़ते हैं तो आपके हालात खराब हो जाते हैं। – Vaccano