web-dev-qa-db-ja.com

MongoDBでインデックスを作成するにはどうすればよいですか?

パフォーマンスの観点から、Mongoデータベースにインデックスを作成したいのですが、どうすれば私がそれを実行できるか手助けしていただけませんか?

あなたの助けがここに感謝されます。

Mongodbコレクションにインデックスを適用する前に、インデックスの次の側面を理解する必要があります。

インデクシング戦略:

  • アプリケーションがmongodbに送信するクエリのタイプを確認します。
  • そのような可能なクエリをすべてリストアップします。
  • 操作の数に基づいて、操作のタイプは index type を定義します
  • アプリケーションのニーズに合った正しいタイプのインデックスを選択してください。タイプには、単一インデックス、複合インデックス、部分インデックス、TTLインデックスなどがあります。
  • クエリにはソート操作が含まれていますか?これに従ってください sortを使用した操作のインデックス作成に関するガイド
  • 索引付け戦略のより詳細なガイド here

インデックスをテストします:

  • 適用するインデックスのリストを取得したら、 explain を使用してインデックスのパフォーマンスをテストします。
  • データベースと enableプロファイラ (devまたはstag内)でサンプルアプリケーション呼び出しを生成して、インデックスのパフォーマンスを確認します。

インデックスの作成方法:

  • インデックスの作成 バックグラウンド。インデックスの作成操作が他の操作をブロックしないことを確認します。
  • データサイズによっては、大きなコレクションにインデックスを作成する場合は、トラフィックの少ない時間帯に作成することを検討してください。または定期メンテナンス期間
  • 特定のユースケースでは、インデックス作成の影響を最小限に抑えるために buildingローリングインデックス を考慮する必要がある場合があります。

作成したインデックスの追跡:

  • インデックスを文書化します。これには、それらのインデックスを作成した時期、理由などが含まれる場合があります。

本番環境でインデックスの使用統計を測定します:

  • 本番環境でこれらのインデックスを適用したら、1〜2週間でインデックスの使用状況をチェックします stas インデックスが実際に使用されているかどうかを確認します
  • インデックスがまったく使用されていない場合は、削除することを検討してください。

注意:

  • インデックスにより、書き込み操作に パフォーマンスペナルティ が追加されます。アプリケーションに必要なインデックスを設計して適用します。
9
Atish

基本的な構文は次のとおりです。

db.collection.createIndex(keys, options)

したがって、たとえば:

$ db.users.createIndex({"username" : 1})

詳細については、 MongoDB Indexes を参照してください。

3
craigcaulfield