从巨大的mongo db中删除一个集合并回收空间

时间:2013-12-06 08:52:36

标签: mongodb collections repair

我在生产环境中设置了一个mongo分片。 在我的应用程序中,我每天都会创建数据库,因为我的单日数据库大小达到18 GB。

我的数据库中有一个集合,用于记录我网站点击的原始数据。我只在一天内使用此集合,因为我的db脚本将整个原始数据转换为聚合数据。

我想在一天结束时删除此集合,但我的困惑是由于此集合的大小(大约6 GB)和我的db大小超过17 GB是否可以安全地使用修复数据库命令。

请你建议我这样做。

1 个答案:

答案 0 :(得分:1)

MongoDB(位于2.4)目前在数据库级别分配存储。你是正确的,你需要运行repairDatabase命令才能收回preallocated storage

如果该空间即将重新使用(即第二天的原始数据),您可以将其分配而不是运行修复。如果您每天处理不同数量的数据,这可能会使用一些过多的存储空间,因为您基本上会保留在已分配最多存储空间的“高水位线”。

如果您担心空间使用情况,更好的方法是将原始数据添加到一个单独的数据库中,当您不再需要原始数据时(即原始数据进入单独的数据库)每天收集而不是单独收集)。