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 記錄超過的時間,...