2015-06-09 10 views
13

मैं बड़े हिस्से में डेटा स्टोर करने के लिए बल्कवाइटऑपरेशन (जावा ड्राइवर) का उपयोग कर रहा हूं। सबसे पहले यह ठीक काम करता प्रतीत होता है, लेकिन जब संग्रह आकार में बढ़ता है, तो आवेषण में काफी समय लग सकता है।बड़े संग्रहों के लिए मोंगो डीबी में थोक सम्मिलन प्रदर्शन

वर्तमान में 20 एम दस्तावेजों के संग्रह के लिए, 1000 दस्तावेजों के थोक सम्मिलन में लगभग 10 सेकंड लग सकते हैं।

क्या संग्रह आकार से स्वतंत्र आवेषण करने का कोई तरीका है? मेरे पास कोई अपडेट या अप्सर्ट नहीं है, यह हमेशा नया डेटा है जो मैं डाल रहा हूं।

लॉग से निर्णय लेते हुए, ताले के साथ कोई समस्या नहीं प्रतीत होती है। प्रत्येक दस्तावेज़ में एक समय क्षेत्र होता है जिसे अनुक्रमित किया जाता है, लेकिन यह रैखिक रूप से बढ़ रहा है इसलिए मुझे इंडेक्स को पुनर्गठित करने के लिए समय लेने के लिए मोंगो की आवश्यकता नहीं है।

मैं प्रदर्शन में सुधार के लिए कुछ विचार जानकर अच्छा लगेगा

धन्यवाद

+0

क्या आपने शेर्डिंग के बारे में सोचा है? प्रदर्शन दस्तावेज़ आकार, प्रारंभिक डेटा, एचडब्ल्यू, क्लस्टर सेटअप इत्यादि जैसे कई पैरामीटर पर निर्भर करता है। यह भी जांचें कि क्या mongoimport का उपयोग किया जा सकता है। जबकि सम्मिलित मोंगो जेसन ऑब्जेक्ट को मान्य करता है, यदि आपका दस्तावेज़ बड़ा है तो उस सत्यापन में भी समय लगेगा और ऐसे मामलों में प्रदर्शन में बाधा आ सकती है जिससे सत्यापन अक्षम हो सकता है लेकिन दस्तावेजों के आकार में छोटे होने पर बूस्ट मामूली होगा। –

+0

संग्रह में 2 एम दस्तावेज़ों का संग्रह कब प्रदर्शन था? और संग्रह पर कौन से अनुक्रम स्थापित किए गए हैं, औसत नया दस्तावेज़ आकार क्या है, भौतिक मीडिया क्या है, और प्राथमिक की रैम क्या है? मेरा आंत कहता है कि एक छोटे पैमाने पर बुनियादी ढांचे को अब एक बड़े वर्कलोड से निपटना है .... –

+0

क्या आपने समांतर में अपना थोक लिखने पर विचार किया है? –

उत्तर

4

आप मानते हैं कि अनुक्रमण किसी भी document reorganisation आवश्यकता नहीं है और जिस तरह से आप सूचकांक वर्णित चलता है कि एक right handed index ठीक है। इसलिए, इंडेक्सिंग को किसी मुद्दे के रूप में अस्वीकार कर दिया जाता है। आप निश्चित रूप से - जैसा ऊपर बताया गया है - निश्चित रूप से इंडेक्स को छोड़कर और अपने थोक लिखने को फिर से चलाकर इसे रद्द कर दें।

अनुक्रमण के अलावा

, मैं करूंगा ...

  • पर विचार करें कि क्या आपके डिस्क डेटा की मात्रा आप बने रहे के साथ बनाए रखने कर सकते हैं। Mongo docs
  • उपयोग profiling में इस पर अधिक जानकारी को समझने के लिए अपने लेखन
3
  1. साथ क्या हो रहा है अपने संग्रह में किसी भी सूचकांक है? यदि हां, तो इसे इंडेक्स पेड़ बनाने के लिए समय लेना होगा।
  2. डेटा समय श्रृंखला है? यदि हां, तो आवेषण से अधिक अपडेट का उपयोग करें। कृपया इस ब्लॉग को पढ़ें। ब्लॉग इन-प्लेस अपडेट्स को आवेषण से अधिक कुशलता से सुझाता है (https://www.mongodb.com/blog/post/schema-design-for-time-series-data-in-mongodb)
  3. क्या आपके पास sharded संग्रह सेट करने की क्षमता है? यदि हाँ, यह समय को कम करेगा (15million IP जियो प्रविष्टि रिकॉर्ड के साथ 3 sharded सर्वर में यह परीक्षण किया)
1
  • डिस्क उपयोग & सीपीयू: डिस्क उपयोग और सीपीयू की जाँच करें और इनमें से किसी भी अगर देखना अधिकतम कर रहे हैं। जाहिर है, यह डिस्क होनी चाहिए जो आपके लिए इस समस्या का कारण बन रही है।

  • मोंगो लॉग: इसके अलावा, अगर एक 1000 थोक क्वेरी 10sec ले जा रहा है, तो मोंगो लॉग के लिए करता है, तो 1000 थोक में किसी भी कुछ आवेषण कि समय देने के लिए कर रहे हैं की जाँच करें। किसी भी तरह के प्रश्नों देखते हैं, तो आप अपने विश्लेषण

एक और बात है कि जिज्ञासा आपके मोंगो उदाहरण पर होने के आदेश है स्पष्ट नहीं है को कम कर सकते हैं। क्या इन्सर्ट एकमात्र ऑपरेशन होता है जो होता है या अन्य खोज क्वेरी भी होती हैं जो भी चलती हैं?यदि हां, तो आपको जो भी संसाधन अधिकतम हो रहा है उसे स्केलिंग करना चाहिए।

संबंधित मुद्दे