2012-09-10 23 views
9

隨着我的項目代碼不斷髮展,新的索引正在實施,我相信一些舊的索引不再需要。然而,在我放棄它們以查看是否有任何事情放緩之前,我寧願如果有更多的編程或分析方法來確定索引是否被再次使用。任何簡單的方法來告訴是否仍在使用mongodb索引?

我沒有在system.indexes集合中看到任何東西,但理想情況是有一些索引訪問的統計信息!是這樣嗎?

+2

沒有直接的指標每個索引使用信息(如MongoDB 2.2.0)。有幾條與鏈接到MongoDB問題隊列中的跟蹤工單的指標相關的建議:[SERVER-5828](https://jira.mongodb.org/browse/SERVER-5828)。 – Stennie

回答

11

運行您的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

+2

Dex看起來很酷,但仍然不讓我知道哪些索引沒有使用。但要檢查它!所以這聽起來像是我去分析一段時間,然後看看哪些索引從未出現過。 – Zugwalt

+0

是的,分析可能是你最好的選擇。實際上,我認爲寫一個工具可以自動完成這個工作 - 也許我應該再次打破它。 –

+1

好吧,我花了幾個小時的腳本...似乎在我相當簡單的系統上工作。讓我知道它是否有幫助。 –

相關問題