4

私はインデックス({ a : 1, b : -1 })を作成しています.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
    },
}
4

1 に答える 1

5

MongoDBのドキュメントによると

バックグラウンド インデックスの構築により、インデックスの構築中に読み取り操作と書き込み操作を続行できます。ただし、これらのインデックスの構築は完了するまでに時間がかかり、インデックスが大きくなります。

だから、驚くことではありません。基本的に、mongo はフォアグラウンド インデックスとは異なるメカニズムを使用してバックグラウンド インデックスを作成します。これにより、とりわけ、最終的なインデックスが大きくなります。

于 2013-05-07T04:42:09.813 に答える