2011-06-04 131 views
4

我最近一直在使用mongodb,並且發現它佔用了很多空間。MongoDB佔用太多空間?

例如,在其db目錄/ var/lib/mongodb /中,如果輸入「du -sh」,則結果爲417M。問題是數據庫中只有很少的條目,我不知道這會佔用多達400M的空間。這是正常的嗎?還是我做錯了什麼?

+0

還是因爲它是基於文檔的存儲? – user482594 2011-06-04 09:38:25

+0

是的,MongoDB是一個文檔存儲,所以它也存儲文檔密鑰。彼得建議運行「修復」是正確的。 – 2011-06-04 12:17:50

+0

可能的重複[爲什麼MongoDB佔用這麼多空間?](http://stackoverflow.com/questions/20087895/why-do-mongodb-takes-up-so-much-space) – Lix 2015-04-16 13:34:40

回答

1

數據庫通常會自動擴展空間,但在不再需要時不會返回。這可能發生在測試或運行查詢期間。同樣,如果你有索引或者創建了map-reduce集合,他們需要去「你的」數據旁邊的某處。

必須手動運行特殊工具才能回收空間。結帳repair database功能。

運行它,看看有多少仍在清洗後使用。

+0

我用那個命令我擁有的所有dbs(我只有2個),而我仍然獲得417M。發行版是admin.0文件佔用64MB,admin.1佔用128MB,admin.ns佔用16MB,另一個db佔用相同的空間量。我猜(128 + 68 + 16)MB是mongodb高效運行所需的最小空間,即使我沒有很多集合,也沒有每個db中的條目。 – user482594 2011-06-04 18:00:50

+0

我在我的機器上檢查了哪裏有幾個mongodb,我發現indeen 64 + 128 + 16Mb。我還看到https://jira.mongodb.org/browse/SERVER-1636這裏有人要求做這個配置,但似乎沒有高優先級。 – 2011-06-04 20:45:22

2

如果空間不足,您可以啓動幾個選項,以便文件不會比數據預分配的大。這會降低性能,因爲數據在磁盤上不會連續,並且在插入/更新數據時需要分配。通常當數據被刪除時,空間不會被釋放到文件系統,但分配的文件中的空間將被mongodb重用。

詳細信息請參閱此頁:http://www.mongodb.org/display/DOCS/Excessive+Disk+Space