2013-05-07 5 views
4

Я создаю индекс ({a: 1, b: -1}), один раз переднего плана и другие делающие на фоне. Проверьте общий размер индекса. Передний план: 82536720 Фон: 154927024MongoDB background Размер индекса

Может кто-нибудь сказать мне, почему существует огромная разница в размерах?

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

+0

@JohnnyHK: да, я проверил db.currentOp(), который был пуст –

ответ

5

MongoDB documentation говорит

фона индекс конструкция позволяет операции чтения и записи для продолжения при построении индекса; однако эти построения индексов занимают больше времени и заканчиваются большим индексом.

Так что не удивительно. В основном, mongo использует другой механизм для создания фонового индекса, чем индекс переднего плана, который, среди прочего, приводит к тому, что конечный индекс будет больше.

Смежные вопросы