我有一个已经分配了85GB空间的数据库。我使用show dbs命令获得了这个大小。 但是当我使用db.stats()时,我的存储大小为63GB。在浏览完文档后,我发现dat mongo db为创建的db分配了一个大小,然后填充了实际数据。
为什么mongo会做这个预分配,有没有办法可以避免这种预分配?
如果是,那么这样做是否是一个好主意,或者从性能的角度来看是否会产生影响?
感谢!!!
答案 0 :(得分:4)
详情请见:http://www.mongodb.org/display/DOCS/Excessive+Disk+Space
现在你的情况。我认为数据文件的当前大小不能仅由预分配引起。分配的数据文件的最大大小为2G。也许你曾经存储过比今天更多的数据?上面的链接还显示了如果您确定不会很快就需要它来回收这些数据。这将在此过程中需要大量磁盘空间,因此您必须对此进行一些规划。
禁用预分配确实会产生性能影响。当您执行许多插入操作时,该过程通常需要等待创建新文件。
答案 1 :(得分:0)
您可以使用--noprealloc command line parameter禁用预分配。
您可以阅读更多here