2011-08-22 88 views
7

我有一個已分配了85GB空間的數據庫。我使用show dbs命令獲得了這個大小。 但是,當我使用db.stats(),我得到的存儲大小爲63GB。在閱讀文檔之後,我發現dat mongo db會爲創建的數據庫分配一個大小,然後填充實際的數據。MongoDb:避免過多的磁盤空間

爲什麼mongo做這種預分配,有沒有辦法可以避免這種預分配?

如果是的話,這樣做會不是一個好主意?或者從性能的角度來看它會產生影響?

謝謝!

回答

4

詳細信息可以在這裏找到:http://www.mongodb.org/display/DOCS/Excessive+Disk+Space

我們你的情況。我認爲您的數據文件的當前大小不能單獨由預分配引起。分配的數據文件的最大大小是2G。也許你曾經存儲過比現在更多的數據?上面的鏈接還顯示瞭如果您確定無論如何不會很快需要回收這些數據。在這個過程中,這需要大量的磁盤空間,所以你必須給出一些計劃。

禁用預分配確實會影響性能。當你做很多插入時,這個過程通常需要等待創建一個新文件。

+0

嘿謝謝你的回覆....大小的差異是因爲我曾經存儲過數據並刪除了它。查看你提供鏈接的文檔 - 我將使用db.runCommand({compact:'collectionname'}來壓縮集合。 –