データをロードした後に索引を作成するのは常に早く早くなりますか?
-
11-12-2019 - |
質問
私はMongoDB(実際にはトークム×であれば)を読み込む必要がある多数のレコード(~10億)を持っています。私はコレクションに作成する必要がある6つの異なるインデックスを持っています。データをロードしてからインデックスを作成するのは常に速くなりますか?Mongoのログファイルを見ると、Mongoは実際にインデックス作成を開始する前にある種の大きな操作(行数は?)を実行しているようです、そしてそれは私が作成するすべてのインデックスに対してこれを行います。
データをロードした後にインデックスを作成するのに常に速くなりますか?
データをロードした後まで待機した場合は、バックグラウンドで各インデックスを作成するのが速くなります。むしろ1バイ1
解決
背中に戻る私たちはこのように私たちのデータを負荷にします:
- ドロップインデックス
- クラスタ化されたインデックスが構築される順序でデータをロードする(すなわち、データを正確な方法でエクスポートする)
- ロードが完了したら、クラスタ化された索引を作成します。
- 次に、追加の非クラスタ索引を作成します。
- ミラー時間(これは私がそんなにうまく食べることができる前のものでした)
その方法は常にインデックスを所定の位置に残すよりも早く証明されました。ただし、これはSybaseおよびSQL Serverの場合でした。他のシステムが似ていると想像していますが、私は特定のために言うことはできません。
他のヒント
大規模でロード操作をしている場合は、トークム×バルクローダを使用してデータを渡すだけで、主キー索引と任意の副次索引の両方を作成するだけでよい。詳細については、 http:// docsでのドキュメントで利用できます。.tokutek.com / tokumx / tokumx-commands.html#tokumx-new-commands-loader
所属していません dba.stackexchange