問題がある:移行データは、クエリの速度はますます遅くなる
私は3つのMongoのテーブルを持っている、と私は3つのSQL Serverテーブルへ、そこからデータを移行したいです。各モンゴーテーブルには、_id
に1つのインデックスしかありません。
私はこれを行うには公式のC#ドライバを使用します。
MongoCursor mongocursor = mongoCollection.find();
mongocursor.setHint("_id_");
mongocursor.setSortOrder(new string[] { "_id" });
foreach (BsonDocument bd in mongocursor)
{
//To do sth...
}
次に、私はmongostatを使ってクエリを監視します。私はそれぞれのgetmoreコマンドが遅くなり、遅くなったことに気付きます。 15,000,000レコードを移行すると約10分後、それぞれのgetmoreコマンドは約5秒かかるでしょう。その後、30,000,000レコードを移行すると約20分後、それぞれのgetmoreコマンドは約10秒かかるでしょう!
ログは、このようなものです:
11:04:19 [conn809] getmore
YWANG4TestDataBase.UserOperationLog_2012_03_17 query: { $query: {},
$hint: "`_id_`", $orderby: { _id: 1 } } cursorid:80356003137218
nreturned:10396 reslen:4194659 8578ms
が私を助けてください。私は何が起こったのか分からない。
ありがとう、@ dcrosta。ソート順は重要ですが、あなたは私にインスピレーションを与えました。私はテーブルを再作成します。幸いにも、テーブルはあまり大きくありません。問題はこわれてしまった。^。^ – lastfallen