紧凑的命令不会释放MongoDB 2.0中的空间

时间:2011-09-27 06:55:55

标签: mongodb

我刚刚安装了MongoDB 2.0并试图在早期版本中运行compact命令而不是repair命令。我的数据库目前是空的,这意味着只有一个集合有0个条目和两个系统集合(索引,用户)。目前,db在硬盘上占用大约4 GB的空间。 db用作临时队列,所有项目在处理完后都会被删除。

我尝试在mongo shell中运行以下命令。

use mydb
db.theOnlyCollection.runCommand("compact")

返回

ok: 1

但硬盘仍然采用相同的空间。我也尝试压缩系统集合,但这没有用。

当我运行正常修复命令时

db.repairDatabase()

数据库已压缩,只需400 MB。

任何人都知道为什么压缩命令不起作用?

非常感谢你的帮助。

最佳

亚历

1 个答案:

答案 0 :(得分:4)

收集压缩不应该减少数据文件的大小。重点是对收集和索引数据进行碎片整理 - 将未使用的空间间隙组合到连续的空间中,以便将新数据存储在那里。此外,它实际上可能增加数据文件的大小:

  

压缩可能会使数据文件的总大小增加2GB。即使在这种情况下,总收集存储空间也会减少。

http://www.mongodb.org/display/DOCS/compact+Command#compactCommand-Effectsofacompaction