2011-06-04 132 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