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