2013-12-12 5 views
10

मेरे पास केवल 1 कैप्ड संग्रह लॉग के साथ log_test1 नामक एक डीबी है। कैप्ड संग्रह का अधिकतम आकार 512 एम है। 200k डेटा डालने के बाद, मैंने पाया कि डीबी का डिस्क उपयोग 1.6 जी है। Db.stats() के साथ, मैं भंडारण आकार 512 एम देख सकता हूं, सही है, लेकिन मेरी वास्तविक फ़ाइल आकार 1.6 जी है, ऐसा क्यों हुआ? मैं डिस्क आकार को कैसे नियंत्रित कर सकता हूं बस मेरा कैप्ड संग्रह आकार और इंडेक्स आकार है?क्यों मेरा mongodb फ़ाइल आकार भंडारण से बड़ा है db.stats() में आकार?

> use log_test1 
switched to db log_test1 
> db.stats() 
{ 
    "db" : "log_test1", 
    "collections" : 3, 
    "objects" : 200018, 
    "avgObjSize" : 615.8577328040476, 
    "dataSize" : 123182632, 
    "storageSize" : 512008192, 
    "numExtents" : 3, 
    "indexes" : 8, 
    "indexSize" : 71907920, 
    "fileSize" : 1610612736, 
    "nsSizeMB" : 16, 
    "dataFileVersion" : { 
     "major" : 4, 
     "minor" : 5 
    }, 
    "ok" : 1 
} 

उत्तर

10

ऐसा शायद इसलिए है क्योंकि मोंगोडीबी डेटा और जर्नल फाइलों को प्रीलोकेट करता है।


MongoDB 2

डेटा निर्देशिका में, MongoDB किसी विशेष आकार के लिए डेटा फ़ाइलें preallocates, फाइल सिस्टम विखंडन को रोकने के लिए भाग में। MongoDB पहली डेटा फ़ाइल <databasename>.0, अगली <databasename>.1 इत्यादि का नाम है। पहली फ़ाइल mongod आवंटन 64 मेगाबाइट्स, अगले 128 मेगाबाइट्स और इसी तरह, 2 गीगाबाइट तक है, जिस बिंदु पर सभी बाद की फ़ाइलें 2 गीगाबाइट हैं। डेटा फ़ाइलों में आवंटित स्थान वाली फ़ाइलें शामिल हैं लेकिन इसमें कोई डेटा नहीं है। mongod एक 1 गीगाबाइट डेटा फ़ाइल आवंटित कर सकता है जो 90% खाली हो सकता है। अधिकांश बड़े डेटाबेस के लिए, अप्रयुक्त आवंटित स्थान डेटाबेस की तुलना में छोटा है।

यूनिक्स सिस्टम पर, mongod एक अतिरिक्त डेटा फ़ाइल preallocates और पृष्ठभूमि में 0. Preallocating डेटा फ़ाइलों को डिस्क स्थान initializes महत्वपूर्ण विलंब होने से बचाता है जब एक नया डेटाबेस फ़ाइल अगले आवंटित किया जाता है।

आप noprealloc रन टाइम विकल्प के साथ प्रीलोकेशन अक्षम कर सकते हैं। हालांकि noprealloc उत्पादन वातावरण में उपयोग के लिए लक्षित नहीं है: परीक्षण के लिए और छोटे डेटा सेट के साथ केवल noprealloc का उपयोग करें जहां आप अक्सर डेटाबेस छोड़ते हैं।

MongoDB 3

अपने डेटा निर्देशिका, जो डिफ़ॉल्ट कॉन्फ़िगरेशन में /data/db निर्देशिका है में डेटा फ़ाइलें, से डेटा सेट डेटाबेस में डाला बड़ा हो सकता है। निम्नलिखित संभावित कारणों पर विचार करें:

पूर्व आबंटित डेटा फ़ाइलों

MongoDB फाइल सिस्टम विखंडन, से बचने के लिए अपने डेटा फ़ाइलों preallocates और इस वजह से, इन फ़ाइलों के आकार जरूरी नहीं कि ऐसा अपने डेटा के आकार को दर्शाते हैं।

storage.mmapv1.smallFiles विकल्प इन फ़ाइलों के आकार को कम करेगा, जो उपयोगी हो सकता है यदि आपके पास डिस्क पर कई छोटे डेटाबेस हैं।

oplog

यदि यह mongod एक प्रतिकृति सेट के एक सदस्य, डेटा निर्देशिका oplog.rs फ़ाइल है, जो स्थानीय डेटाबेस में एक पूर्व आबंटित छाया हुआ संग्रह है भी शामिल है।

डिफ़ॉल्ट आवंटन 64-बिट स्थापनाओं पर डिस्क स्थान का लगभग 5% है।

पत्रिका

डेटा निर्देशिका पत्रिका फ़ाइलें, जो डिस्क पर लिखने के संचालन की दुकान से पहले MongoDB उन्हें डेटाबेस के लिए लागू होता है शामिल हैं।

खाली रिकॉर्ड

MongoDB के रूप में यह दस्तावेज और संग्रह को हटा देता है डेटा फ़ाइलों में खाली रिकॉर्ड की सूची बनाए रखता है। MongoDB इस स्पेस का पुन: उपयोग कर सकता है, लेकिन डिफ़ॉल्ट रूप से, इस स्पेस को ऑपरेटिंग सिस्टम पर वापस नहीं करेगा।


MongoDB Storage FAQ से लिया।

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