2012-09-12 29 views
0

今天我想測試這兩個參數「配置文件」和「slowms」。下面是我的情況下:[MongoDB]當'profile'爲2時,哪些操作將保存在system.profile集合中?

輪廓是1和slowms是200

  1. > ./的mongod --dbpath /數據/分貝--fork --profile 1 --slowms 200
  2. 做查詢與此查詢成本覈算415ms
  3. 日誌文件的相關操作信息,system.profile也有相關的文件
  4. 再次做了查詢,此查詢成本覈算110毫秒
  5. 日誌文件中沒有相關的操作信息,system.profile呢沒有相關文檔

更新這兩個參數 「簡檔」 和 「slowms」

輪廓是2和slowms是200

  1. > ./的mongod --dbpath /數據/ DB --fork --profile 2 --slowms 200
  2. 做一個查詢和這個查詢成本覈算410ms
  3. 日誌文件的相關操作信息,system.profile也有相關的文件
  4. 再次做了查詢,此查詢成本覈算100ms的
  5. 日誌文件中沒有相關的操作信息,system.profile沒有相關文件

的參數「曲線」爲2,爲什麼日誌文件和system.profile沒有相關信息?謝謝!

+0

您可以在您的問題查詢的例子,如以及如何檢查你的第二種情況下system.profile集合中的這個查詢?另外,你使用的是哪個特定版本的MongoDB? – Stennie

回答

1

所有緩慢的查詢都寫入到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(..)來設置或獲取每個數據庫的分析級別。

因此,對於你的第一個測試:

  1. ./mongod --dbpath /數據/ DB --fork --profile 1 --slowms 200
  2. 做一個查詢和這個查詢成本覈算415ms
  3. 日誌文件中有相關的操作信息,system.profile也有相關文件
  4. 再次做一個查詢,這個查詢的成本爲110ms
  5. 日誌文件沒有相關的操作信息,系統。個人資料沒有相關文件更新,因爲你有

這是預期的結果與你的剖析設置爲1,並用200毫秒slowms:

  • 你慢查詢(415ms> 200毫秒)是被記錄到system.profile以及日誌文件
  • 所述第二查詢(110個毫秒200毫秒<)不被認爲是慢的查詢,以便沒有登錄或保存在system.profile

對於喲烏爾第二測試:

  1. > ./的mongod --dbpath /數據/分貝--fork --profile 2 --slowms 200
  2. 做一個查詢和這個查詢計算費用410ms
  3. 日誌文件具有相關操作信息,system.profile也有相關文件
  4. 再次做了查詢,此查詢成本覈算100ms的
  5. 日誌文件中沒有相關的操作信息,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) 
+0

嗨,Stennie,這個測試是在我的電腦裏完成的,沒有其他操作。 – Steve

相關問題