インデックス使用状況の測定
インデックス のアクセス情報の取得 $indexStats
コレクションの各インデックスの使用に関する統計を取得するには、 $indexStats
集計ステージを使用します。たとえば、次の集計操作は、orders
コレクションのインデックス使用に関する統計を返します。
db.orders.aggregate( [ { $indexStats: { } } ] )
クエリプランを返す explain()
使用されたインデックス、スキャンされたドキュメントの数、クエリの処理にかかる時間(ミリ秒単位)など、クエリ プロセスに関する統計を返すには、executionStats モードで db.collection.explain()
メソッドまたは cursor.explain()
メソッドを使用します。
プラン選択中に収集された部分的な実行統計を表示するには、allPlansExecution モードで db.collection.explain()
メソッドまたは cursor.explain()
メソッドを実行します。
インデックスの使用の制御 hint()
MongoDB が db.collection.find()
操作に特定のインデックスを使用するよう強制するには、hint()
メソッドでインデックスを指定します。hint()
メソッドを find()
メソッドに追加します。次の例で考えてみます。
db.people.find( { name: "John Doe", zipcode: { $gt: "63000" } } ).hint( { zipcode: 1 } )
特定のインデックスの実行統計を表示するには、db.collection.find()
に hint()
メソッドを追加し、その後に cursor.explain()
を追加します。例:
db.people.find( { name: "John Doe", zipcode: { $gt: "63000" } } ).hint( { zipcode: 1 } ).explain("executionStats")
または、hint()
メソッドを db.collection.explain().find()
に追加します。
db.people.explain("executionStats").find( { name: "John Doe", zipcode: { $gt: "63000" } } ).hint( { zipcode: 1 } )
MongoDB がインデックスを使用しないようにするには、$natural
演算子を hint()
メソッドに指定します。
db.people.find( { name: "John Doe", zipcode: { $gt: "63000" } } ).hint( { $natural: 1 } )
インデックス メトリクス
$indexStats
集計ステージに加えて、MongoDB は、データベースのインデックスの使用を分析する際に考慮する必要があるさまざまなインデックス統計を提供します。