我刚刚安装了MongoDB 2.0并试图在早期版本中运行compact命令而不是repair命令。我的数据库目前是空的,这意味着只有一个集合有0个条目和两个系统集合(索引,用户)。目前,db在硬盘上占用大约4 GB的空间。 db用作临时队列,所有项目在处理完后都会被删除。
我尝试在mongo shell中运行以下命令。
use mydb
db.theOnlyCollection.runCommand("compact")
返回
ok: 1
但硬盘仍然采用相同的空间。我也尝试压缩系统集合,但这没有用。
当我运行正常修复命令时
db.repairDatabase()
数据库已压缩,只需400 MB。
任何人都知道为什么压缩命令不起作用?
非常感谢你的帮助。
最佳
亚历
答案 0 :(得分:4)
收集压缩不应该减少数据文件的大小。重点是对收集和索引数据进行碎片整理 - 将未使用的空间间隙组合到连续的空间中,以便将新数据存储在那里。此外,它实际上可能增加数据文件的大小:
压缩可能会使数据文件的总大小增加2GB。即使在这种情况下,总收集存储空间也会减少。
http://www.mongodb.org/display/DOCS/compact+Command#compactCommand-Effectsofacompaction