我刚刚安装了 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()` 条件