Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

एक ट्रिगर उठाने वाले इंसर्ट के साथ MySQL डेडलॉक

थ्रेड 2 उपयोगकर्ता तालिका में पंक्ति पर एक साझा लॉक रखता है।

फिर थ्रेड 1 उसी पंक्ति पर एक विशेष लॉक प्राप्त करने का प्रयास करता है, और लॉक प्रतीक्षा में चला जाता है।

लेकिन थ्रेड 1 को टाइम आउट करने का अवसर नहीं मिलेगा, क्योंकि थ्रेड 2 फिर अपने लॉक को एक्सक्लूसिव में बढ़ाने की कोशिश करता है ... धागा 2.

वे एक दूसरे को अवरुद्ध कर रहे हैं।

यह गतिरोध है।

सर्वर मारने के लिए एक लेनदेन का चयन करता है, ताकि वे एक दूसरे को अनावश्यक रूप से अवरुद्ध न करें।

डेडलॉक डिटेक्शन एक थ्रेड को दूसरे की कीमत पर तुरंत सफल होने की अनुमति देता है। अन्यथा वे दोनों तब तक लॉक प्रतीक्षा में फंसे रहेंगे जब तक कि उनमें से एक की मृत्यु बहुत लंबे समय तक प्रतीक्षा करने से नहीं हो जाती।

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL में संख्या अनुक्रम

  2. mySQL ऑटो इंक्रीमेंट 10 से बढ़ रहा है (ClearDB और Node)

  3. mysql लाने सरणी

  4. विंडोज से MySQL 5.7 को पूरी तरह से कैसे हटाएं

  5. MySQL CONCAT(string,longtext) परिणाम हेक्स स्ट्रिंग में होता है