mongodb - 紧凑命令未释放 MongoDB 2.0 中的空间

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

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

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

它返回

ok: 1

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

当我运行正常的修复命令时

db.repairDatabase()

数据库已压缩,仅占用 400 MB。

有人知道为什么 compact 命令不起作用?

非常感谢您的帮助。

最好的

亚历克斯

最佳答案

Collection compaction 不应该减少数据文件的大小。要点是对收集和索引数据进行碎片整理 - 将未使用的空间间隙组合成连续空间,从而允许将新数据存储在那里。此外,它实际上可能增加数据文件的大小:

Compaction may increase the total size of your data files by up to 2GB. Even in this case, total collection storage space will decrease.

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

https://stackoverflow.com/questions/7565290/

相关文章:

mongodb - 在 MongoDB 中使用 directoryperdb 的好处

c# - 如何将上传的图像保存到 MongoDB 集合并检索它

mongodb - mongodb中OR+Sort查询的复合索引

mongodb - 如何使用 map/reduce 处理 10000 多个唯一键以在 MongoDB

mongodb - 您将如何使用文档存储(例如 CouchDB、Redis、MongoDB、Riak

python - Pymongo 断言错误 : ids don't match

ruby-on-rails - Mongoid `group()` 条件

mongodb安装 - 要求?

php - 将数据从关系数据库反规范化到非关系数据库的最佳实践

python - 如何使用 MongoKit 对远程数据库主机进行身份验证?