मैंने एक बार एक बहुत बड़े (टेराबाइट +) MySQL डेटाबेस के साथ काम किया। हमारे पास सबसे बड़ी तालिका सचमुच एक बिलियन पंक्तियों से अधिक थी।
यह काम किया। MySQL ने डेटा को सही ढंग से संसाधित किया। हालांकि यह बेहद कमजोर था।
बस बैक अप और डेटा संग्रह करना एक चुनौती थी। यदि हमें आवश्यकता होती है तो टेबल को पुनर्स्थापित करने में कुछ दिन लगेंगे।
हमारे पास 10-100 मिलियन पंक्ति सीमा में कई तालिकाओं थीं। टेबल में कोई भी महत्वपूर्ण जुड़ने में बहुत समय लगता था और हमेशा के लिए ले जाएगा। इसलिए हमने संग्रहित प्रक्रियाओं को टेबल पर 'चलने' के लिए लिखा और प्रक्रिया 'आईडी' की सीमाओं के खिलाफ जुड़ती है। इस तरह हम एक समय में डेटा 10-100,000 पंक्तियों को संसाधित करेंगे (आईडी के 1-100,000 के बाद 100,001-200,000 इत्यादि के साथ जुड़ें)। यह पूरी तालिका के खिलाफ शामिल होने से काफी तेज था।
प्राथमिक कुंजी पर आधारित बहुत बड़ी टेबल पर इंडेक्स का उपयोग करना भी अधिक कठिन है। MySQL स्टोरों को दो टुकड़ों में संग्रहीत करता है - यह प्राथमिक कुंजी मानों के लिए इंडेक्स के रूप में इंडेक्स (प्राथमिक अनुक्रमणिका के अलावा) को संग्रहीत करता है। इसलिए अनुक्रमित लुकअप दो हिस्सों में किया जाता है: पहला MySQL एक इंडेक्स पर जाता है और इसे प्राथमिक कुंजी मानों को खींचता है जिसे इसे ढूंढने की आवश्यकता होती है, फिर यह प्राथमिक कुंजी इंडेक्स पर दूसरा लुकअप करता है यह पता लगाने के लिए कि वे मान कहां हैं।
इसका शुद्ध यह है कि बहुत बड़ी टेबल (1-200 मिलियन प्लस पंक्तियों) के लिए तालिकाओं के खिलाफ अनुक्रमण अधिक प्रतिबंधक है। आपको कम, सरल सूचकांक की आवश्यकता है। और यहां तक कि सरल चयन कथन भी कर रहे हैं जो सीधे इंडेक्स पर नहीं हैं, कभी वापस नहीं आ सकते हैं। जहां खंड हिट इंडेक्स होना चाहिए या इसके बारे में भूल जाना चाहिए।
लेकिन सभी जो कहा जा रहा है, चीजें वास्तव में काम करती थीं। हम इन बहुत बड़ी तालिकाओं के साथ MySQL का उपयोग करने में सक्षम थे और गणना करते हैं और सही उत्तर प्राप्त करते हैं।
स्रोत
2010-11-23 10:57:48
अच्छी तरह से यदि आप बड़े होते हैं तो आप वास्तव में एक टेबल को विभाजित नहीं करना चाहते हैं, आप बस इसे विभाजित करना चाहते हैं। –
संभावित डुप्लिकेट [प्रदर्शन से पहले एक MySQL डेटाबेस कितना बड़ा हो सकता है] प्रदर्शन शुरू होने से पहले (http://stackoverflow.com/questions/1276/how-big-can-a-mysql-डेटा-get-before-performance-starts -to-degrade) – random