簡體   English   中英

跟蹤 MongoDB 性能?

[英]Track MongoDB performance?

有沒有辦法在 MongoDB 中跟蹤“查詢”性能? 專門測試索引或子文檔?

在 sql 中,您可以運行查詢、查看執行時間和其他分析指標。

我有一個巨大的 mongoDB 集合,想嘗試不同的變體和索引,不知道如何測試它,很高興看到找到一條記錄需要多長時間..(我是 MongoDB 的新手)。 謝謝

這里有兩件事你可能很熟悉。

  1. 解釋計划
  2. 慢日志

解釋計划

這里有一些關於解釋的基本文檔 運行解釋就像db.foo.find(query).explain()一樣簡單。 請注意,這實際上是在運行查詢,因此如果您的查詢速度很慢,這也會很慢

要了解輸出,您需要查看下面慢速日志中的一些文檔。 您基本上會獲得有關“掃描了多少索引”、“找到了多少索引”等的詳細信息。對於此類性能詳細信息,解釋實際上取決於您。 閱讀上面和下面的文檔,為您指明正確的方向。

慢日志

默認情況下,慢日志處於活動狀態,閾值為 100 毫秒。 這是有關分析的完整文檔的鏈接 幫助您入門的幾個關鍵點:

獲取/設置分析:

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

查看慢查詢:

db.system.profile.find()

MongoDB 有一個可以打開的查詢分析器。 請參閱: http : //www.mongodb.org/display/DOCS/Database+Profiler

根據我的經驗,我建議使用 mtools 支持( https://github.com/rueckstiess/mtools )閱讀 mongologs,有很多功能可以幫助閱讀輸出。

例如,我發現mlogFilter命令非常有用,例如:

mlogfilter.exe   [PATH_TO_FILE_LOG]  --slow --json | mongoimport --db logsTest -c logCollection --drop

啟動此命令,您將在表中記錄所有慢查詢。

在生產環境中激活 mongoprofiler 可能會導致性能問題,因此您可以在讀取日志時獲得相同的結果。

還要考慮system.profile集合是 ipped ,因此您應該檢查system.profile集合的大小,否則您將無法找到您要查找的查詢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM