我正在创建一个索引({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
},
}
答案 0 :(得分:5)
后台索引构造允许在构建索引时继续读写操作;但是,这些索引构建需要更长的时间才能完成并导致更大的索引。
所以,毫不奇怪。基本上,mongo使用不同的机制来构建背景索引,而不是前景索引,这会导致最终索引更大。