"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > एकाधिक प्रक्रियाओं के साथ एक बड़ी तालिका को अद्यतन करते समय मैं अपने MySQL डेटाबेस में गतिरोधों को कैसे हल कर सकता हूँ?

एकाधिक प्रक्रियाओं के साथ एक बड़ी तालिका को अद्यतन करते समय मैं अपने MySQL डेटाबेस में गतिरोधों को कैसे हल कर सकता हूँ?

2024-12-21 को प्रकाशित
ब्राउज़ करें:982

How Can I Resolve Deadlocks in My MySQL Database When Updating a Large Table with Multiple Processes?

MySQL लॉक डेडलॉक को समझना

समस्या:
5,000,000 पंक्तियों वाली एक MySQL तालिका के कारण गतिरोध होने का खतरा है इसे अद्यतन करने वाली पर्ल प्रक्रियाओं के समानांतर। किसी विशिष्ट पंक्ति को अद्यतन करते समय गतिरोध त्रुटि उत्पन्न होती है।

कारण:
गतिरोध तब होता है जब दो या दो से अधिक लेन-देन परस्पर विरोधी तरीके से एक ही पंक्ति पर ताले प्राप्त करने का प्रयास करते हैं। इस मामले में, फ़ाइल_टेबल पर a_lock का उपयोग करने वाली कई प्रक्रियाएं समवर्ती रूप से एक ही पंक्ति तक पहुंचने का प्रयास करती हैं।

समाधान:

1. लॉक वेट टाइमआउट को समझना:
त्रुटि संदेश लेनदेन को फिर से शुरू करने का सुझाव देता है। यह लॉक वेट टाइमआउट को संदर्भित करता है। डिफ़ॉल्ट रूप से, MySQL लॉक प्राप्त होने के लिए अनिश्चित काल तक प्रतीक्षा करता है। आप गतिरोधों को स्वचालित रूप से संभालने और पुनः प्रयास करने के लिए इसे छोटी टाइमआउट अवधि पर सेट कर सकते हैं।

2. गतिरोधों को संभालना:
विफल प्रश्नों को पुनः प्रयास करने के लिए अपने कोड में तर्क लागू करके गतिरोधों को संभालें। आप गतिरोध त्रुटि का पता लगाने और क्वेरी को स्वचालित रूप से पुन: निष्पादित करने के लिए प्रयास/पकड़ ब्लॉक का उपयोग कर सकते हैं।

3. अनुकूलन रणनीतियाँ:
गतिरोध की संभावना को कम करने के लिए, निम्नलिखित अनुकूलन पर विचार करें:

  • विशिष्ट पंक्तियों या स्तंभों पर विवाद को कम करने के लिए डेटाबेस को ट्यून करें।
  • अपना अनुकूलन करें टेबल स्कैन और इंडेक्स खोजों की संख्या को कम करने के लिए क्वेरीज़।
  • लॉक जारी करने के लिए छोटे और अधिक लगातार लेनदेन ब्लॉक का उपयोग करें जल्दी।
  • एक अलग स्टोरेज इंजन का उपयोग करने पर विचार करें, जैसे कि MyISAM, जो पंक्ति-स्तरीय लॉकिंग का समर्थन नहीं करता है।

4. अनुशंसित संसाधन:
अधिक जानकारी के लिए, निम्नलिखित संसाधन देखें:

  • MySQL मैनुअल: https://dev.mysql.com/doc/refman/8.0/en/deadlocks .html
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3