GISTपुन: अनुक्रमण विशाल डाटाबेस (अंग्रेजी विकिपीडिया) कुशलतापूर्वक
अंग्रेजी विकिपीडिया के एक बड़े पैमाने पर 40 जीबी आयात कर से पहले, मैं अस्थायी रूप से (तीन तालिकाओं से अनुक्रमित और ऑटो वेतन वृद्धि क्षेत्रों को दूर करने के लिए किया था भार को संभालने के लिए 'पृष्ठ', 'संशोधन', और 'पाठ')। अब मैंने अंततः अंग्रेजी विकिपीडिया को अपनी स्थानीय मशीन पर सफलतापूर्वक आयात किया है और एक स्थानीय दर्पण (मीडियाविकि एपीआई) बनाया है। वाह!
हालांकि, अब मुझे एक दशक से भी कम समय में इंडेक्स और ऑटो-वृद्धि फ़ील्ड को फिर से बनाने की आवश्यकता है। सौभाग्य से, (1) मैंने इंडेक्स और फ़ील्ड को हटाए जाने से पहले phpmyadmin में प्रासंगिक तालिकाओं के बहुत सारे स्क्रीन-शॉट्स ले लिए थे; (2) मैं आयात से पहले किए गए कदमों के चरम परिशुद्धता के साथ समझा सकता हूं; और (3) यह MySQL में धाराप्रवाह किसी के लिए भी मुश्किल नहीं होना चाहिए। दुर्भाग्य से, मेरे पास MySQL में कोई विशेषज्ञता नहीं है, इसलिए "बच्चे के कदम" स्पष्टीकरण बेहद सहायक होंगे।
ठीक क्या मैं (आयात की तैयारी) DID:
कदम 1, 2, 3: इस छवि को इससे पहले कि मैं क्षेत्र 'बदलें' पर क्लिक करके PAGE_ID संशोधित दर्शाया गया है तालिका पेज और अन-जांच 'ऑटो-वृद्धि' (आयात करने की तैयारी में)। मैं क्षेत्र के लिए ठीक वही परिवर्तन प्रदर्शन तालिका में rev_id संशोधन और old_id तालिका मेंपाठ लेकिन अतिरेक से बचने के लिए स्क्रीन शॉट्स छोड़े गए।
चरण 4: इस छवि को तालिका पेज के लिए अनुक्रमणिका को दर्शाया गया है इससे पहले कि मैं उन सभी को गिरा दिया।
चरण 5: इस छवि को तालिका संशोधन के लिए अनुक्रमणिका को दर्शाया गया है इससे पहले कि मैं उन सभी को गिरा दिया।
चरण 6: इस छवि को तालिका पाठ के लिए अनुक्रमणिका को दर्शाया गया है इससे पहले कि मैं उन सभी को गिरा दिया।
क्या मैं अब जरूरत है (आयात के बाद बहाल करने):
मैं सिर्फ एक सौ साल का इंतजार किए बिना मूल अनुक्रमित और ऑटो वेतन वृद्धि क्षेत्रों को बहाल करने की जरूरत है।
सेट-अप विवरण: पीएचपी 5.3.8 (apache2handler), MySQL 5.5.16 (InnoDB), अपाचे 2.2.21, Ubuntu 12.04 LTS, मीडियाविकि 1.19.0 (निजी विकि)
+1 एक अच्छी तरह से लिखित प्रश्न के लिए +1 है, लेकिन मुझे इस आकार के डेटा सेट से डर है, इंडेक्स बनाने में कुछ समय लग रहा है इससे कोई फर्क नहीं पड़ता कि आप इसे कैसे करते हैं। यदि यह माईसाम था, तो आप आयात करने से पहले इंडेक्स को छोड़ने से बचा सकते थे: माईसाम टेबल में, आप उन्हें अक्षम कर सकते हैं और अपना डेटा आयात करने के बाद उन्हें फिर से सक्षम कर सकते हैं, इस मामले में MySQL स्वचालित रूप से सॉर्ट करके इंडेक्स की मरम्मत करेगा। लेकिन फिर भी, 40 जीबी डेटा को सॉर्ट करने के लिए एक तेज प्रणाली पर कुछ समय लग रहा है। और आप इनो डीबी का उपयोग कर रहे हैं, जिसमें यह एक संभावना AFAIK नहीं है। – Daan
मुझे नहीं लगता कि एक नई अनुक्रमणिका बनाने से अक्षम और सक्षम करना तेज है। आप शून्य से शुरू करते हैं, डेटा को सॉर्ट करते हैं और इंडेक्स लिखते हैं। – usr
याद रखें कि मैं एक पूर्ण MySQL नौसिखिया हूं। मुझे पता है कि मैंने क्या किया, लेकिन मुझे पता नहीं है कि कैसे सॉर्ट करना, पुनः इंडेक्स करना इत्यादि। इसलिए कोड के साथ समझाया गया तो यह बहुत उपयोगी होगा। यदि यह मायआईएसएएम का उपयोग करके अक्षम और सक्षम करने में सक्षम बनाता है तो मैं तेजी से फिर से अनुक्रमणित करता हूं, मैं हमेशा सबकुछ खरोंच से पुनर्निर्माण कर सकता हूं - मैंने इसे कई बार किया है, मैं इसे लगभग 5 घंटे में आसानी से कर सकता हूं। कुंजी यह है कि मैं MySQL के बारे में लगभग कुछ भी नहीं जानता, इसलिए कृपया विशिष्ट रहें और यदि संभव हो तो कोड उदाहरण प्रदान करें। –