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

टेबल लॉकिंग के बिना बड़ी MySQL प्रोडक्शन टेबल पर इंडेक्स कैसे बनाएं?

2024-11-17 को प्रकाशित
ब्राउज़ करें:243

How to Create an Index on a Large MySQL Production Table Without Table Locking?

टेबल लॉक किए बिना बड़ी MySQL प्रोडक्शन टेबल पर इंडेक्स कैसे बनाएं

समस्या पृष्ठभूमि:

एक बड़ी MySQL तालिका पर एक इंडेक्स बनाना एक कठिन काम हो सकता है, खासकर उत्पादन वातावरण में जहां निर्बाध पहुंच महत्वपूर्ण है। पारंपरिक क्रिएट इंडेक्स स्टेटमेंट के परिणामस्वरूप संपूर्ण टेबल लॉक हो सकता है, जिससे सभी समवर्ती संचालन अवरुद्ध हो सकते हैं। ऑनलाइन निष्पादित किए जाते हैं, जिससे सूचकांक निर्माण के दौरान पढ़ने और लिखने का कार्य जारी रहता है।

हालाँकि, MySQL 5.5 और इससे पहले के संस्करणों में, जिनमें शामिल हैं InnoDB और MyISAM टेबल, इंडेक्स अपडेट टेबल पर लिखने को ब्लॉक कर देंगे। सर्कुलर मास्टर्स तकनीक:

प्राथमिक मास्टर (मास्टर) से प्रतिकृति बनाते हुए एक सेकेंडरी मास्टर (मास्टर बी) सेट करें ए).
  • मास्टर बी पर स्कीमा अपडेट निष्पादित करें (अपग्रेड के दौरान इसे पीछे रहने की अनुमति दें)।
  • सुनिश्चित करें कि स्कीमा परिवर्तन मास्टर ए पर डाउनवर्जन स्कीमा से प्रतिकृति कमांड के साथ संगत है .
सभी क्लाइंट को मास्टर ए से मास्टर बी में स्वचालित रूप से स्विच करें।

मास्टर ए पर स्कीमा अपडेट करें और इसे बनाएं सेकेंडरी मास्टर।

पेरकोना का पीटी-ऑनलाइन-स्कीमा-चेंज टूल:
  1. यह टूल सर्कुलर मास्टर्स दृष्टिकोण को स्वचालित करता है:
  2. अद्यतन स्कीमा के साथ एक नई तालिका बनाना।
  3. नई तालिका को मूल तालिका के साथ समन्वयित रखना ट्रिगर का उपयोग करना।
  4. मूल तालिका से पंक्तियों को बैचों में कॉपी करना।
मूल तालिका को नई तालिका से बदलना।

AWS RDS विचार:

    अमेज़ॅन के आरडीएस पर होस्ट किए गए MySQL डेटाबेस के लिए, स्कीमा की सुविधा के लिए "रीप्लिका प्रमोशन पढ़ें" सुविधा का उपयोग किया जा सकता है टेबल लॉक किए बिना परिवर्तन। इसमें केवल पढ़ने योग्य दास में परिवर्तन करना और फिर उसे नया स्वामी बनने के लिए प्रचारित करना शामिल है।
  • वैकल्पिक तकनीक:
  • एक अस्थायी का उपयोग करें तालिका:
नई अनुक्रमणिका के साथ एक अस्थायी तालिका बनाएं, मूल तालिका से डेटा डालें, और मूल तालिका को अस्थायी से बदलें तालिका।

तालिका को विभाजित करें:

तालिका को छोटे-छोटे विभाजनों में विभाजित करें, प्रत्येक विभाजन पर अलग से सूचकांक बनाएं, और फिर विभाजनों को वापस एक साथ मर्ज करें।

पृष्ठभूमि प्रक्रिया का उपयोग करें: एक अलग पृष्ठभूमि प्रक्रिया बनाएं जो धीरे-धीरे सूचकांक बनाती है जबकि तालिका सामान्य संचालन के लिए सुलभ रहती है। यह दृष्टिकोण सभी MySQL संस्करणों में समर्थित नहीं है।

नवीनतम ट्यूटोरियल अधिक>

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

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

Copyright© 2022 湘ICP备2022001581号-3