MongoDB 后台索引大小

4

我正在创建一个索引({a:1,b:-1}),一次在前台,另一次在后台。检查总索引大小。

前台:82536720

后台:154927024

有人能告诉我为什么存在如此巨大的大小差异吗?

Mongo > db.testing.ensureIndex({a:1,b:-1})
Mongo > db.testing.stats()
{
    "ns" : "test.testing",
    "count" : 2402158,
    "size" : 86479836,
    "avgObjSize" : 36.00089419596879,
    "totalIndexSize" : 160486704,
    "indexSizes" : {
        "_id_" : 77949984,
        "a_1_b_-1" : 82536720
    },
}
Mongo > db.testing.dropIndexes()
Mongo > db.testing.ensureIndex({a:1,b:-1},{background : true})
Mongo > db.testing.stats()
{
    "count" : 2402158,
    "size" : 86479836,
    "avgObjSize" : 36.00089419596879,
    "totalIndexSize" : 232877008,
    "indexSizes" : {
        "_id_" : 77949984,
        "a_1_b_-1" : 154927024
    },
}

你确定在检查背景索引大小之前,背景索引已经完成构建了吗? - JohnnyHK
@JohnnyHK:是的,我检查了db.currentOp(),结果为空。 - Abhishek Kumar
1个回答

5
MongoDB官方文档中提到:

后台索引构建允许在构建索引的同时进行读写操作;但是,这些索引构建需要更长的时间才能完成,并且结果是更大的索引。

所以,毫不奇怪。基本上,Mongo使用与前台索引构建不同的机制来构建后台索引,这将导致最终索引更大。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接