我有一个大约 8G 的数据库。我确实复制了数据库以生成副本。然后我使用 js 控制台修剪了副本。然后我运行了一个 reapir 数据库,副本的大小仍然与原始数据库完全相同。
问问题
113 次
1 回答
2
这很可能意味着您没有释放足够的空间来将整个扩展区或文件返回给操作系统。假设您有五个 2GB 的文件(MongoDB 在前几个较小的文件之后以 2GB 的增量预分配文件),现在假设您在这个数据库中有 8GB 的数据。最后一个文件将始终为空,因为 MongoDB 在需要之前预先分配了一个文件。所以 8GB 占用了 4 个 2GB 的文件,而 1 个 2GB 的文件是空的。
现在你做了一些修剪——甚至可能删除 1.8GB 的东西。您运行repairDB,它会在一组新的数据库文件中尽可能紧凑地重写每条记录。除了它仍然需要相同的五个 2GB 文件,因为第四个文件有 100MB 的数据,最后一个文件必须是空的。
您可以查看 db.stats() 的输出,以查看数据大小与存储大小的比较,但事实是,与分配的文件大小相比,这些数字相对较小,这可能就是您看到什么的原因你看到了。
于 2013-06-23T08:13:11.720 回答