私のプロジェクトのコードが進化するにつれて、新しいインデックスが配置され、一部の古いインデックスは不要になったと確信しています。ただし、それらを削除して速度が低下するかどうかを確認する前に、インデックスが使用されなくなったかどうかを判断するためのプログラムまたは分析的な方法があればいいと思います。
system.indexes コレクションには何も表示されませんが、インデックス アクセスに関する統計がどこかにあるのが理想的です。これは事実ですか?
db.collection.find(...)
最後に追加してクエリを実行します.explain()
。これは、クエリがどのように実行されているかを確認する最も便利な方法です: http://www.mongodb.org/display/DOCS/Explain
プロファイリングをオンにすることもできます。プロファイル ログ エントリには、プロファイリングされた各クエリのインデックスの使用状況が示されます。ただし、まだ集計統計はありません。特に、使用されていないインデックスは表示されず、(クエリごとに) 使用されているインデックスのみが表示されます。(編集:私はそれを想像していたに違いありません-プロファイラーからクエリを取得してから、それに対して説明を実行する必要があります。手動でちょっと面倒です。)http://www.mongodb.org/display/DOCS/Database+Profiler
更新: mongolab からこれを見たところです。これらの線に沿った興味深い新しいプロジェクトのように見えます: http://blog.mongolab.com/2012/06/introducing-dex-the-index-bot/
更新: プロファイラーを使用して、使用されていないインデックスをチェックするスクリプトを作成しました: https://github.com/wfreeman/indexalizer