2013-05-07 81 views
4

我正在創建一個索引({a:1,b:-1}),一次前景和其他背景。檢查總索引大小。 前景:82536720 背景:154927024MongoDB背景索引大小

有人能告訴我爲什麼有一個巨大的尺寸差異?

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

您確定在檢查其大小之前完成後臺索引建設嗎? – JohnnyHK 2013-05-07 03:45:53

+0

@JohnnyHK:是的,我檢查了空的db.currentOp() – 2013-05-07 04:48:21

回答

5

MongoDB documentation

背景索引結構允許讀取和寫入操作,同時建立索引繼續;然而,這些指數構建需要更長的時間才能完成並導致更大的指數。

所以,並不奇怪。基本上,mongo使用不同的機制來構建背景索引,而不是前景索引,這會導致最終索引更大。