2011-08-22 10 views
7

मेरे पास एक डेटाबेस है जिसे 85 जीबी की जगह आवंटित की गई है। मुझे शो डीबीएस कमांड का उपयोग करके यह आकार मिला। लेकिन जब मैं db.stats() का उपयोग करता हूं, तो मुझे स्टोरेज आकार 63 जीबी के रूप में मिलता है। दस्तावेज़ों के माध्यम से जाने के बाद मुझे पता चला कि डॉट मोंगो डीबी एक आकार को डीबी में आवंटित करता है जो कि बनाया गया है और फिर वास्तविक डेटा भर जाता है।MongoDb: अत्यधिक डिस्क स्थान से बचें

मोंगो इस प्रीलालोकेशन क्यों करता है और क्या कोई तरीका है कि मैं इस प्रीलोकेशन से बच सकता हूं?

यदि हां, तो यह करना एक अच्छा विचार होगा या यह प्रदर्शन बिंदु से प्रभावित होगा?

धन्यवाद !!!

उत्तर

4

विवरण यहां पाया जा सकता: http://www.mongodb.org/display/DOCS/Excessive+Disk+Space

अब आपके मामले के लिए। मुझे लगता है कि आपके डेटाफाइल का वर्तमान आकार अकेले प्रीलोकेशन के कारण नहीं हो सकता है। आवंटित डेटा फ़ाइलों का अधिकतम आकार 2 जी है। हो सकता है कि आपने एक बार आज से अधिक डेटा संग्रहीत किया हो? उपर्युक्त लिंक यह भी दिखाता है कि यदि आप सुनिश्चित हैं कि आपको जल्द ही इसकी आवश्यकता नहीं होगी, तो इस डेटा को पुनः प्राप्त करने के लिए कैसे करें। प्रक्रिया के दौरान इसके लिए बहुत सी डिस्क स्पेस की आवश्यकता होगी, इसलिए आपको इसे कुछ योजना देना होगा।

प्रीलोकेशन को अक्षम करने से वास्तव में परफॉर्मेंस प्रभाव होगा। जब आप कई आवेषण करते हैं, तो प्रक्रिया को नियमित रूप से एक नई फ़ाइल बनाने के लिए इंतजार करना होगा।

+0

अरे उत्तर के लिए धन्यवाद .... आकार में अंतर इसलिए है क्योंकि मैंने एक बार डेटा संग्रहित किया था और इसे बाद में हटा दिया था। दस्तावेज़ों के माध्यम से जा रहे हैं जिनके लिए आपने लिंक प्रदान किया है- मैं संग्रह को कॉम्पैक्ट करने के लिए db.runCommand ({compact: 'collectionname'} का उपयोग करने जा रहा हूं। –

0

आप --noprealloc command line parameter के साथ प्रीलोकेशन अक्षम कर सकते हैं।


आप पढ़ सकते हैं और अधिक here

+0

संस्करण 2.6 के रूप में यह ध्वज बहिष्कृत है। --noprealloc अब डिफ़ॉल्ट है। – binarysubstrate

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