mongodb慢查詢

開啓 Profiling 功能


1. 直接在啓動參數裏直接進行設置

      啓動MongoDB時加上–profile=1 即可

     還可以慢查詢時間(即大於多少時間被記入慢查詢)--slowms 200


2. 可以通過db.getProfilingLevel()命令來獲取當前的Profile級

       db.getProfilingLevel()

     

          0 – 不開啓

        1 – 記錄慢命令 (默認爲>100ms)

        2 – 記錄所有命令


        db.setProfilingLevel( level , slowms ) 

  db.setProfilingLevel( 1 , 10 );


3.查詢慢查詢記錄

        db.system.profile.find() 

          列出執行時間長於某一限度(5ms)的 Profile 記錄:

          > db.system.profile.find( { millis : { $gt : 5 } } ) 



4.慢查詢參數詳解

  ts-該命令在何時執行.

  millis Time-該命令執行耗時,以毫秒記.

  info-本命令的詳細信息.

  query-表明這是一個query查詢操作.

  ntoreturn-本次查詢客戶端要求返回的記錄數.比如, findOne()命令執行時 ntoreturn 爲 1.有limit(n) 條件時ntoreturn爲n.

  query-具體的查詢條件(如x>3).

  nscanned-本次查詢掃描的記錄數.

  reslen-返回結果集的大小.

  nreturned-本次查詢實際返回的結果集.

  update-表明這是一個update更新操作.

  fastmod-Indicates a fast modify operation. See Updates. These operations are normally quite fast.

  fastmodinsert – indicates a fast modify operation that performed an upsert.

  upsert-表明update的upsert參數爲true.此參數的功能是如果update的記錄不存在,則用update的條件insert一條記錄.

  moved-表明本次update是否移動了硬盤上的數據,如果新記錄比原記錄短,通常不會移動當前記錄,如果新記錄比原記錄長,那麼可能會移動記錄到其它位置,這時候會導致相關索引的更新.磁盤操作更多,加上索引更新,會使得這樣的操作比較慢.

  insert-這是一個insert插入操作.

  getmore-這是一個getmore 操作,getmore通常發生在結果集比較大的查詢時,第一個query返回了部分結果,後續的結果是通過getmore來獲取的。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章