MongoDB文件太大了

时间:2012-12-12 17:50:14

标签: mongodb size filesize database

我只是想了解为什么MongoDB使用那么多的磁盘空间,或者更好的是可能会减少它。

以下只是一个例子。我有一个1,35GB的storageSize(包括dataSize +预分配空间),索引大小约为0.5GB,总计大约2GB。我知道mongodb会分配2GB文件,所以你可以在那里放松一些空间,但是如何使用6GB的文件大小呢?填充设置为1,实际上它只是一次写入数据,从不删除或更新。有没有可能减小文件大小?

就我而言,MongoDB使用的空间是传统SQL解决方案的6倍。我真的想使用MongoDB,但我需要找到一种减少磁盘空间的方法。谢谢!

> db.stats(1024*1024)
{
    "db" : "data",
    "collections" : 4345,
    "objects" : 9328910,
    "avgObjSize" : 67.95158105287756,
    "dataSize" : 604,
    "storageSize" : 1350,
    "numExtents" : 6480,
    "indexes" : 8686,
    "indexSize" : 511,
    "fileSize" : 6078,
    "nsSizeMB" : 16,
    "ok" : 1
}

注意:“数据”是此统计信息中唯一使用的数据库

2 个答案:

答案 0 :(得分:4)

  

是否有可能减小文件大小?

嗯,部分是的。如果你有一个小/ [很小的]数据库/ s,你可能想在启动databaseprocess / es时使用smallfiles标志。
通过这样做,您将预分配的文件从最大2千兆字节减少到最大512兆字节,日志文件从1千兆字节减少到128兆字节。需要注意的是,如果将此标志与大型数据库一起使用,则服务器需要创建许多文件,这可能会影响性能。

如果您从数据库中删除了足够的数据,则可以运行db.repairDatabase()命令来释放未使用的磁盘空间。请记住,运行此命令将在您的数据库中创建一个全局块。

答案 1 :(得分:0)

我不明白的是,在unix系统中,mongodb不只是预先分配当前文件,还有NEXT文件,这可能导致2 + 2 = 4GB的总预分配......

相关问题