थ्रेड 2 उपयोगकर्ता तालिका में पंक्ति पर एक साझा लॉक रखता है।
फिर थ्रेड 1 उसी पंक्ति पर एक विशेष लॉक प्राप्त करने का प्रयास करता है, और लॉक प्रतीक्षा में चला जाता है।
लेकिन थ्रेड 1 को टाइम आउट करने का अवसर नहीं मिलेगा, क्योंकि थ्रेड 2 फिर अपने लॉक को एक्सक्लूसिव में बढ़ाने की कोशिश करता है ... धागा 2.
वे एक दूसरे को अवरुद्ध कर रहे हैं।
यह गतिरोध है।
सर्वर मारने के लिए एक लेनदेन का चयन करता है, ताकि वे एक दूसरे को अनावश्यक रूप से अवरुद्ध न करें।
डेडलॉक डिटेक्शन एक थ्रेड को दूसरे की कीमत पर तुरंत सफल होने की अनुमति देता है। अन्यथा वे दोनों तब तक लॉक प्रतीक्षा में फंसे रहेंगे जब तक कि उनमें से एक की मृत्यु बहुत लंबे समय तक प्रतीक्षा करने से नहीं हो जाती।
आप ऑटोकॉमिट मोड में हैं, लेकिन निश्चित रूप से, इसका मतलब यह नहीं है कि आप लेन-देन में नहीं हैं। InnoDB के साथ प्रत्येक क्वेरी को अभी भी लेन-देन में संभाला जाता है, लेकिन ऑटोकॉमिट के साथ, लेन-देन परोक्ष रूप से शुरू होता है जब क्वेरी निष्पादित होने लगती है और सफल होने पर निहित रूप से प्रतिबद्ध होती है।