为什么我的 mongodb 索引这么大

jdh*_*jdh 5 mongodb

我的 mongodb 集合中有 57M 文档,即 19G 数据。我的索引占用了10G。这听起来正常吗,还是我做错了什么!我的主键是2G。

{
        "ns" : "myDatabase.logs",
        "count" : 56795183,
        "size" : 19995518140,
        "avgObjSize" : 352.0636272974065,
        "storageSize" : 21217578928,
        "numExtents" : 39,
        "nindexes" : 4,
        "lastExtentSize" : 2146426864,
        "paddingFactor" : 1,
        "flags" : 1,
        "totalIndexSize" : 10753999088,
        "indexSizes" : {
            "_id_" : 2330814080,
            "type_1_playerId_1" : 2999537296,
            "type_1_time_-1" : 2344582464,
            "type_1_tableId_1" : 3079065248
        },
        "ok" : 1
    }
Run Code Online (Sandbox Code Playgroud)

Jen*_*nna 6

索引大小由被索引的文档数量以及键的大小决定(复合键存储更多信息并且会更大)。在这种情况下,_id 索引除以文档数为 40 字节,这似乎比较合理。

如果您运行 db.collection.getIndexes(),您可以找到索引版本。如果 {v : 0},则索引是在 mongo 2.0 之前创建的,在这种情况下,您应该升级到 {v:1}。此过程记录在此处:http : //www.mongodb.org/display/DOCS/Index+Versions