क्या यह धीमा हो जाएगा? रैम में फिट होने वाले डेटा के लिए काम मिलेगा? क्या होगा यदि mongodb अनुक्रमणिका अधिक रैम हैं?क्या होगा, जब mongodb डीबी आकार समय होगा> तो राम?
उत्तर
मोंगो
बारे में MongoDB स्मृति मैप की गई फ़ाइलों का उपयोग करता।
इसका मतलब यह है कि ऑपरेटिंग सिस्टम अनिवार्य रूप से नियंत्रित करता है जो स्मृति में और बाहर (डिस्क से और बाहर) को नियंत्रित करता है।
नियम
अपने अनुक्रमित + काम कर सेट स्मृति से अधिक है, पिछले हाल ही में उपयोग पृष्ठों (स्मृति के वर्गों) डिस्क पर प्लावित कर दिया जाएगा। यह केवल हाल ही में उपयोग किया जाने वाला डेटा छोड़ देता है जो अभी भी स्मृति में आसानी से उपलब्ध है।
आपका ऑपरेटिंग सिस्टम इसे नियंत्रित करता है।
जबकि आप अपने असली कामकाजी सेट और इंडेक्स मेमोरी में फिट नहीं होते हैं, तो आप भयानक प्रदर्शन का अनुभव करेंगे, अभ्यास में, किसी के कामकाजी सेट (हॉट डेटा) का आकार उनके कुल डेटासेट से बहुत छोटा है।
यदि आप इस नियम का उल्लंघन नहीं करते हैं, तो आपके पास अधिकांश समय उत्कृष्ट प्रदर्शन होना चाहिए, भले ही आपकी अनुक्रमणिका + कुल डेटा कुल उपलब्ध स्मृति से अधिक हो।
यह कैसे काम करता
तो एक प्रश्न किया जाता है डेटा है कि स्मृति में नहीं है की जरूरत है, यह स्मृति (डिस्क से लिया गया) में पृष्ठांकित किया जाएगा और एक प्रदर्शन हिट नहीं होगा।
नोट: यह अनिवार्य रूप से स्थिति है जब डेटाबेस पहली बार शुरू होता है (ठंडा)।
कुछ भी शुरू करने की याद में नहीं है, डेटा त्रुटियों के दौरान पृष्ठ त्रुटियां होती हैं, और डेटा आवश्यकतानुसार स्मृति में पग किया जाता है। जब आप स्मृति से बाहर निकलते हैं, तो हाल ही में उपयोग किए गए पेज (भाग) को गर्म (अधिक हाल ही में एक्सेस किए गए) डेटा के पक्ष में स्मृति से फ़्लश किया जाता है।
यह भी उल्लेखनीय है कि इंडेक्स लगातार उपयोग किए जाते हैं, और इस प्रकार हमेशा हाल ही में उपयोग किए जाते हैं, वे वास्तव में कभी भी बाहर नहीं होते हैं।
यदि आपकी अनुक्रमणिका उपलब्ध रैम से बड़ी हैं तो प्रदर्शन तेजी से ड्रॉप हो जाता है। मोंगोडीबी साइट विशेष रूप से आपको सलाह देती है कि "सुनिश्चित करें कि आपकी अनुक्रमणिका रैम में फिट हो सकती है"।
यदि आपके प्रश्न सुस्त लगते हैं, तो आपको यह सत्यापित करना चाहिए कि आपकी अनुक्रमणिका रैम में फिट होने के लिए काफी छोटी है। उदाहरण के लिए, यदि आप 4 जीबी रैम पर चल रहे हैं और आपके पास 3 जीबी इंडेक्स हैं, तो आपकी इंडेक्स शायद रैम में फिट नहीं कर रही हैं। आपको रैम जोड़ने और/या सत्यापित करना होगा कि आपके द्वारा बनाए गए सभी इंडेक्स वास्तव में उपयोग किए जा रहे हैं।
मैं इस बात से सहमत नहीं हूं कि "आप अभी भी अपेक्षाकृत उच्च प्रदर्शन का अनुभव करेंगे"। मेरे अनुभव में अगर सूचकांक आकार रैम आकार के करीब या उससे अधिक हो जाता है तो प्रदर्शन तेजी से गिर जाता है। MongoDB वेब साइट आपको सूचकांक आकार रखने के लिए सलाह देता है << राम आकार। –
इसका कारण यह है कि जब मैंने कहा कि प्रदर्शन अच्छा था तो वर्किंग सेट + इंडेक्स मेमोरी में हैं कि अगर आपकी अनुक्रमणिका मेमोरी में फिट नहीं होती है तो आपके पास अपने कामकाजी सेट के लिए ज्यादा जगह नहीं होगी और आप " उच्च प्रदर्शन "श्रेणी का अनुभव करेंगे, या मुझे कुछ याद आया? –
आपका उत्तर पढ़ता है ... "यदि आपकी अनुक्रमणिका + कार्य सेट मेमोरी से अधिक है, ..." और जारी है कि "आप अभी भी अपेक्षाकृत उच्च प्रदर्शन का अनुभव करेंगे जबतक कि आप लगातार अपने डेटासेट के हर हिस्से को छू रहे हों।" यह वह हिस्सा है जो भ्रामक है - आपको इंडेक्स> रैम के बाद भयानक प्रदर्शन प्राप्त करने के लिए बहुत कुछ स्पर्श करने की आवश्यकता नहीं है। –