2

私はMongoDBのテスト実装に取り​​組んでおり、1,000,000レコードをコレクションに一括挿入し、2つのシャード間で均等に分散させようとしています. 私の最初の試行では、1 つのシャードには 995760 レコードが含まれ、もう 1 つのシャードには 4251 レコードしか含まれていませんでした。事前に分割しようとしましたが、何も変わりませんでした。私はシャーディングの概念に慣れていないので、この件に関する助けをいただければ幸いです。

アップデート:

私のシャードキーは、1〜999,999の範囲の整数であるフィールド「number」に入力します

状態:

{
"sharded" : true,
"ns" : "test.test_collection",
"count" : 999999,
"numExtents" : 21,
"size" : 43982976,
"storageSize" : 210247680,
"totalIndexSize" : 60396112,
"indexSizes" : {
    "_id_" : 32466896,
    "number_1" : 27929216
},
"avgObjSize" : 43.983019983019986,
"nindexes" : 2,
"nchunks" : 239,
"shards" : {
    "firstset" : {
        "ns" : "test.test_collection",
        "count" : 995754,
        "size" : 43813176,
        "avgObjSize" : 44,
        "storageSize" : 123936768,
        "numExtents" : 11,
        "nindexes" : 2,
        "lastExtentSize" : 37625856,
        "paddingFactor" : 1,
        "systemFlags" : 1,
        "userFlags" : 0,
        "totalIndexSize" : 60118128,
        "indexSizes" : {
            "_id_" : 32319728,
            "number_1" : 27798400
        },
        "ok" : 1
    },
    "secondset" : {
        "ns" : "test.test_collection",
        "count" : 4245,
        "size" : 169800,
        "avgObjSize" : 40,
        "storageSize" : 86310912,
        "numExtents" : 10,
        "nindexes" : 2,
        "lastExtentSize" : 27869184,
        "paddingFactor" : 1,
        "systemFlags" : 1,
        "userFlags" : 0,
        "totalIndexSize" : 277984,
        "indexSizes" : {
            "_id_" : 147168,
            "number_1" : 130816
        },
        "ok" : 1
    }
},
"ok" : 1
}

更新 2:

提案してくれた@Sammayeに感謝します。問題は私のシャードキーに関係していました。キーをハッシュすると、一括挿入によってレコードが均等に分割されました。助けてくれてありがとう!

4

1 に答える 1

1

通常、クラスタがバランスを取るには時間がかかります。これらすべてのドキュメントを 1 つの大きな挿入で入力した場合、最初にすべてがプライマリ シャードに書き込まれ、最大チャンク サイズに達するとチャンクに分割されます。その後、チャンクは 1 つずつ他のシャードに移行されますが、これには時間がかかる場合があります。

私が見る限り、約 100MB のデータがありますが、429 個のチャンクがあります。これは少し奇妙ですか? チャンクサイズとして何を設定しましたか?チャンク サイズが小さすぎると、他のシャードへのチャンクの移行が確実に遅くなる可能性があります。

于 2013-07-25T09:42:43.253 に答える