所有緩慢的查詢都寫入到mongod日誌中。默認slowms
值是100ms。
MongoDB profiling levels可以將附加信息寫入數據庫的system.profile上限集合。
的剖析級別是:
0 - off
1 - write slow operations
to the system.profile collection
2 - write all operations to the system.profile collection
如果你通過了剖析水平命令行或配置文件中的參數,它們影響所有數據庫的默認設置。您還可以使用mongo
shell中的db.setProfilingLevel(..)
和db.getProfilingLevel(..)
來設置或獲取每個數據庫的分析級別。
因此,對於你的第一個測試:
- ./mongod --dbpath /數據/ DB --fork --profile 1 --slowms 200
- 做一個查詢和這個查詢成本覈算415ms
- 日誌文件中有相關的操作信息,system.profile也有相關文件
- 再次做一個查詢,這個查詢的成本爲110ms
- 日誌文件沒有相關的操作信息,系統。個人資料沒有相關文件更新,因爲你有
這是預期的結果與你的剖析設置爲1,並用200毫秒slowms:
- 你慢查詢(415ms> 200毫秒)是被記錄到system.profile以及日誌文件
- 所述第二查詢(110個毫秒200毫秒<)不被認爲是慢的查詢,以便沒有登錄或保存在system.profile
對於喲烏爾第二測試:
- > ./的mongod --dbpath /數據/分貝--fork --profile 2 --slowms 200
- 做一個查詢和這個查詢計算費用410ms
- 日誌文件具有相關操作信息,system.profile也有相關文件
- 再次做了查詢,此查詢成本覈算100ms的
日誌文件中沒有相關的操作信息,system.profile沒有相關文件
- 你慢查詢被記錄到兩個
- 第二個查詢不慢,但將仍然記錄到system.profile作爲分析級別2
注意與分析級別爲2,您將在system.profile中收集更多條目。 find()的默認順序將從最舊到最新,因此如果您想查看給定集合的最新查詢,您需要按照反向自然順序進行排序。
例如,以找到people
集合中的test
數據庫中的最後一個查詢,你可以在類似的test.people
命名空間中搜索到:
db.system.profile.find({'ns':'test.people'}).sort({$natural:-1}).limit(1)
您可以在您的問題查詢的例子,如以及如何檢查你的第二種情況下system.profile集合中的這個查詢?另外,你使用的是哪個特定版本的MongoDB? – Stennie