3

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

下面只是一个例子。我的 storageSize 为 1.35GB(包括 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
}

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

4

2 回答 2

4

有没有可能减少文件大小?

嗯,部分是的。如果您有一个小型/[许多小型] 数据库/s,您可能希望smallfiles在启动数据库进程/es 时使用该标志。
通过这样做,您会将预分配的文件从最大 2 GB 减少到最大 512 MB,并将日志文件从 1 GB 减少到 128 MB。需要注意的是,如果您在大型数据库中使用此标志,服务器需要创建许多文件,这可能会影响性能。

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

于 2012-12-21T10:05:24.340 回答
0

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

于 2012-12-21T09:15:00.097 回答