mongodb慢查詢記錄

2021-12-30 09:27:38 字數 1957 閱讀 1988

mongodb慢查詢記錄

在 mysql中,慢查詢日誌是經常作為我們優化資料庫的依據,那在mongodb中是否有類似的功能呢?答案是肯定的,那就是mongo database profiler.不僅有,而且還有一些比mysql的slow query log更詳細的資訊。它就是我們這篇文章的主題。

開啟 profiling 功能

有兩種方式可以控制 profiling 的開關和級別,第一種是直接在啟動引數裡直接進行設定。

啟動mongodb時加上–profile=級別 即可。

也可以在客戶端呼叫db.setprofilinglevel(級別) 命令來實時配置。可以通過db.getprofilinglevel()命令來獲取當前的profile級別。

> db.setprofilinglevel(2); 

> db.getprofilinglevel()

上面斜體的級別可以取0,1,2 三個值,他們表示的意義如下:

0 – 不開啟

1 – 記錄慢命令 (預設100ms)

2 – 記錄所有命令

profile 記錄在級別1時會記錄慢命令,那麼這個慢的定義是什麼?上面我們說到其預設為100ms,當然有預設就有設定,其設定方法和級別一樣有兩種,一種是通過新增–slowms啟動引數配置。第二種是呼叫db.setprofilinglevel時加上第二個引數:

db.setprofilinglevel( level , slowms ) 

db.setprofilinglevel( 1 , 10 );

查詢 profiling 記錄

與mysql的慢查詢日誌不同,mongo profile 記錄是直接存在系統db裡的,記錄位置 system.profile ,所以,我們只要查詢這個collection的記錄就可以獲取到我們的 profile 記錄了。

> db.system.profile.find() 

nreturned:1 bytes:50" , "millis" : 0} 

db.system.profile.find( ) 

nreturned:2 bytes:86" , "millis" : 0} 

} nreturned:0 bytes:20" , "millis" : 0} 

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

> db.system.profile.find( } ) 

檢視最新的 profile 記錄:

db.system.profile.find().sort()

mongo shell 還提供了乙個比較簡潔的命令show profile,可列出最近5條執行時間超過1ms的 profile 記錄。

profile 資訊內容詳解:

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一條記錄.

mysql 紀錄慢查詢 mysql記錄慢查詢

1,配置開啟 linux 在mysql配置檔案my.cnf中增加 log slow queries var lib mysql slowquery.log 指定日誌檔案存放位置,可以為空,系統會給乙個預設的檔案host name slow.log long query time 2 記錄超過的時間,...

mysql慢查詢日誌記錄

1,配置開啟 linux 在mysql配置檔案my.cnf中增加 log slow queries var lib mysql slowquery.log 指定日誌檔案存放位置,可以為空,系統會給乙個預設的檔案host name slow.log long query time 2 記錄超過的時間,...

mysql慢查詢日誌記錄

1,配置開啟 linux 在mysql配置檔案my.cnf中增加 log slow queries var lib mysql slowquery.log 指定日誌檔案存放位置,可以為空,系統會給乙個預設的檔案host name slow.log long query time 2 記錄超過的時間,...