2010-12-09 72 views
21

有沒有一種方法可以跟蹤MongoDB中的「查詢」性能?特別測試索引或子文檔?跟蹤MongoDB性能?

在sql中,您可以運行查詢,查看執行時間和其他分析指標。我有一個巨大的mongoDB集合,想要嘗試不同的變化和索引,不知道如何測試它,會很高興看到需要多長時間才能找到一個記錄..(我是MongoDB中的新手)。謝謝

回答

22

這裏有兩件事情,你可能會熟悉。

  1. 解釋計劃
  2. 慢日誌

解釋計劃上解釋

Here are some basic docs。運行解釋與db.foo.find(query).explain()一樣簡單。 (請注意,這實際上運行的查詢,所以如果您的查詢很慢,這將是太

要了解輸出,您需要檢查下面的慢日誌中的一些文檔。您基本上會獲得關於「掃描了多少索引」,「找到多少索引」等詳細信息。與此類性能細節的情況一樣,解釋真的取決於您。閱讀上面和下面的文檔,指出你正確的方向。

慢速日誌

默認情況下,緩慢日誌是活動與100ms的閾值。 Here's a link到分析的完整文檔。幾個關鍵點,讓你開始:

get/set方法分析:

db.setProfilingLevel(2); // 0 => none, 1 => slow, 2 => all 
db.getProfilingLevel(); 

見慢查詢:

db.system.profile.find() 
+0

只是在幾年後添加:現在「新」推薦的使用解釋方式是:db.foo.explain()。find(query)。在「查找」之前注意「解釋」。另外,指定explain(true)以獲取更多詳細信息,例如所檢查文檔的數量:db.foo.explain(true).find(query);鍵入db.foo.explain()。幫助列出您可以使用解釋的查詢。 – alexbt 2016-08-24 12:35:03