mongodb性能调试基本技巧

1. 判断哪些是慢查询?

   mongodb通过profile来实时的获取性能较慢的查询,设置profile命令如下


  db.runCommand { profile: 1, slowms: 200 }

表示开启profile,记录大于200毫秒的操作


profile值有以下含义

-1 无变化,返回当前profile值
0 关闭profile, 这是系统默认的profile值
1 开启,只记录慢的操作
2 开启,记录所有操作

或者使用MongoVUE工具



开启后,mongodb会生成system.profile的collection来存储哪些慢的操作

2. 分析慢查询

使用.explain()方法分析查询,例如  db.XXX.find(....).explain()则会生成一个对查询的解释:

   查询结果最主要关注下面几个字段

  • cursor:   BasicCursor 表示用的是非索引的查询, BtreeCursor 表示用的是B树查询,同时会告诉用的是哪个索引
  • nscanned:  总共扫描的文档和索引的数量
  • nscannedObjects: 总共扫描的documents数量
  • n: 满足条件对象的数量
  • millis: 查询花费的时间(微秒)

一般来讲cursor使用B树查询效率高,如果使用了B树查询仍然慢,则需要根据查询条件和数据特点增加不同的索引,例如增加不同字段的组合索引,使得查询能够优先选择更高效的索引,这个是由mongodb自身内部进行选择的。


参考:
https://blog.openshift.com/design-and-performance-tips-for-mongodb-indexes/
https://docs.mongodb.com/manual/reference/command/profile/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值