为什么我的MongoDB大小爆炸?

时间:2011-12-30 19:29:33

标签: mongodb

我正在使用MongoDB进行简单的应用程序并遇到一些不良行为。基本上,我的集合由许多(字符串,整数)元组组成,每个元组平均应该少于64个字节作为文档(包括_id)。我的收藏中有一个索引 - 根据字符串。

在添加了大约800万个文档之后,我没有添加任何新文档,因为我达到了2.5 GB的限制(我有一个32位操作系统)。看起来我做错了什么,因为我没有看到为什么它应该达到那么大的原因。

有关如何排除故障的任何想法或建议? 显然,我很快就会切换到64位操作系统,但我想先了解这种行为。

更新(2):

一旦db“填满”,这就是collection stats命令的输出:

> db.hits.stats()
{
    "ns" : "testdb.hits",
    "count" : 8716619,
    "size" : 611603992,
    "avgObjSize" : 70.16527761509366,
    "storageSize" : 828148736,
    "numExtents" : 21,
    "nindexes" : 2,
    "lastExtentSize" : 145841408,
    "paddingFactor" : 1,
    "flags" : 1,
    "totalIndexSize" : 1007568128,
    "indexSizes" : {
        "_id_" : 360636416,
        "article_-1" : 646931712
    },
    "ok" : 1
}

,这是db stats命令的输出:

> db.stats()
{
    "collections" : 3,
    "objects" : 8716625,
    "avgObjSize" : 70.16526281674386,
    "dataSize" : 611604284,
    "storageSize" : 828153856,
    "numExtents" : 23,
    "indexes" : 2,
    "indexSize" : 1007568128,
    "fileSize" : 3154116608,
    "ok" : 1
}

更新(3): db文件本身:

-rw------- 1 mongodb nogroup  64M 2011-11-14 14:06 testdb.0
-rw------- 1 mongodb nogroup 128M 2011-11-14 14:06 testdb.1
-rw------- 1 mongodb nogroup 256M 2011-11-14 14:06 testdb.2
-rw------- 1 mongodb nogroup 512M 2011-11-14 14:06 testdb.3
-rw------- 1 mongodb nogroup 512M 2011-11-14 14:06 testdb.4
-rw------- 1 mongodb nogroup 512M 2011-11-14 14:06 testdb.5
-rw------- 1 mongodb nogroup 512M 2011-11-14 11:20 testdb.6
-rw------- 1 mongodb nogroup 512M 2011-11-10 10:51 testdb.7
-rw------- 1 mongodb nogroup  16M 2011-11-14 14:05 testdb.ns

1 个答案:

答案 0 :(得分:1)

您可以发布数据库文件大小吗?数据本身是120MB,加上2个索引的180MB,所以你理所当然地希望它符合你的2GB限制,但我想mongodb可能正在做aggressive preallocation of reserved space to avoid file system fragmentation configured