MongoDB慢日志查询分析

一、开启Profiling慢日志

1)开启Profiling的三种方式

1、全局开启Profiling

如果想要全局开启Profiling,则可以在mongod启动时加上参数

1

mongod --profile 1 --slowms100         # 1表示追踪级别,100表示慢查询判定时间(ms)

2、配置文件设置开启

配置文件添加如下配置:

1
2
3

    operationProfiling:
    slowOpThresholdMs: 100
    mode: slowOp

3、mongo shell设置开启

mongo shell进行实时配置,命令如下:

1
2

    > db.setProfilingLevel(1,200)          ---1表示level,200表示慢查询时间(ms),也可以省略时间设置
    { "was" : 1, "slowms" : 100, "ok" : 1 }     ---100表示之前的慢查询时间设定值

1
2

    > db.getProfilingStatus()               ---查询当前慢查询的状态信息
    { "was" : 1, "slowms" : 200 }          ---was后的值表示级别

1
2

    > db.getProfilingLevel()               ---只查询Profiling级别可用此命令
    1

2)Profiling的级别

1
2
3

0 – 不开启
1 – 记录慢命令 (默认为>100ms)
2 – 记录所有命令

3)Profile的相关信息解释

1
2
3
4
5
6
7
8
9
10
11
12
13
14

    ? op:操作的类型,比如:insert,query,command,remove...
    ? ns:被查询目标的命名空间,一般是数据库名和collection名的组合
    ? query:查询的具体语句,如果是insert操作,则会是insert的语句
    ? command:如果操作是一个command,则command语句记录在此
    ? keysExamined:以前是nscanned,3.2版本之后改为keysExamined,表示执行此次操作所扫描的索引键记录数
    ? updateobj:如果操作是一个update,则update语句记录在此
    ? ndeleted:此次操作删除的文档数
    ? ninserted: 此次操作插入的文档数
    ? nModified:此次操作的update的文档数
    ? writeConflicts:如果一个update语句正在操作一个文档,而另一个update同时进行操作此文档,从而造成的冲突数量
    ? locks:此次操作产生锁的相关信息
    ? nreturned:此次操作返回的文档数
    ? responseLength:操作结果集的大小,
moved:表明本次update是否移动了硬盘上的数据,如果新记录比原记录短,通常不会移动当前记录,如果新记录比原记录长,那么可能会移动记录到其它位置,这时候会导致相关索引的更新.磁盘操作更多,加上索引更新,会使得这样的操作比较慢.(不过这个选在仅针对引擎是MMAPv1)

4)查询Profile记录语句

  1. 查询执行时间大于200ms的Profile记录

1

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

  1. 查询执行时间大于200ms的Profile记录:并根据millis排序(-1为降序,1为排序)

1

> db.system.profile.find( { millis : { $gt : 200 } } ).sort({"millis":-1})

  1. 查看最近的10条记录

1

>db.system.profile.find().limit(10).sort( { ts : -1 } ).pretty()

  1. 查看关于某个collection的相关慢查询操作

1

>db.system.profile.find({ns:'mydb.table1'}).pretty()

5)清除Profile慢日志并查看配置

1
2
3

db.setProfilingLevel(0);
db.system.profile.drop();
db.setProfilingLevel(1);

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值