Alex的博客

本博客的文章均为原创,是本人从事行业多年来所遇见一些小问题的解决心得,希望可以帮助到大家!



mongodb 开启慢查询

use admin

#查看当前状态

db.getProfilingLevel()

{"was" : 0 , "slowms" : 100, "ok" : 1}

#开启慢查询

db.getProfilingLevel(1)

{"was" : 1 , "slowms" : 100, "ok" : 1}


参数解释:

"was" : 1 表示当前状态 为1  既只记录超过slowms的记录

"slowms" : 100 表示当前的慢查询时间值为100毫秒

"ok" : 1 表示命令执行成功


值为0|1|2,分别代表意思:0代表关闭,1代表记录慢命令,2代表全部开启 就是所有的语句全部记录


查询: 可接条件

 db.system.profile.find()


返回结果字段解释

ts:命令执行时间
info:命令的内容
query:代表查询
order.order: 代表查询的库与集合
reslen:返回的结果集大小,byte数
nscanned:扫描记录数量
nquery:后面是查询条件
nreturned:返回记录数及用时
millis:所花时间

如果发现时间比较长,那么就需要作优化。
比如nscanned数很大,或者接近记录总数,那么可能没有用到索引查询。
reslen很大,有可能返回没必要的字段。
nreturned很大,那么有可能查询的时候没有加限制。
mongo可以通过db.serverStatus()查看mongod的运行状态



浏览42  评论0  Alex于 2017-12-13 16:05
发言