我只是想了解为什么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
}
注意:“数据”是此统计信息中唯一使用的数据库
答案 0 :(得分:4)
是否有可能减小文件大小?
嗯,部分是的。如果你有一个小/ [很小的]数据库/ s,你可能想在启动databaseprocess / es时使用smallfiles
标志。
通过这样做,您将预分配的文件从最大2千兆字节减少到最大512兆字节,日志文件从1千兆字节减少到128兆字节。需要注意的是,如果将此标志与大型数据库一起使用,则服务器需要创建许多文件,这可能会影响性能。
如果您从数据库中删除了足够的数据,则可以运行db.repairDatabase()
命令来释放未使用的磁盘空间。请记住,运行此命令将在您的数据库中创建一个全局块。
答案 1 :(得分:0)
我不明白的是,在unix系统中,mongodb不只是预先分配当前文件,还有NEXT文件,这可能导致2 + 2 = 4GB的总预分配......