一、MongoDB 慢查询(Profiling)级别说明

0:关闭,不收集任何慢查询数据,默认为0
1:收集慢查询数据,默认是100毫秒
2:收集所有数据

1、开启和设置慢查询
① 修改配置文件(mongo.conf)开启Profiling

#开启慢查询,200毫秒的记录
profile = 1
slowms = 200

② mongoshell来进行临时性打开启Profiling

##登录数据库
mongo --host 127.0.0.1:27017 --username 户名 --password 密码 --authenticationDatabase admin##跳转到要开启慢查询监控的数据库
use crm##设置Profiling
PRIMARY> db.getProfilingStatus()          //查看状态:级别和时间
{ "was" : 1, "slowms" : 100 }PRIMARY> db.getProfilingLevel()          //查看级别
1PRIMARY> db.setProfilingLevel(2)         //设置级别
{ "was" : 1, "slowms" : 100, "ok" : 1 }PRIMARY> db.setProfilingLevel(1,200)     //设置级别和时间
{ "was" : 2, "slowms" : 100, "ok" : 1 }

2、修改慢查询的大小

##关闭Profiling
PRIMARY> db.setProfilingLevel(0)
{ "was" : 0, "slowms" : 200, "ok" : 1 }##删除system.profile集合
PRIMARY> db.system.profile.drop()
true##创建一个新的system.profile集合
PRIMARY> db.createCollection( "system.profile", { capped: true, size:4000000 } )
{ "ok" : 1 }##重新开启Profiling
PRIMARY> db.setProfilingLevel(1)
{ "was" : 0, "slowms" : 200, "ok" : 1 }

备注:要改变Secondarysystem.profile的大小,你必须停止Secondary,运行它作为一个独立的,然后再执行上述步骤。完成后,重新启动加入副本集。

二、慢查询(system.profile)说明

PRIMARY> db.system.profile.find().pretty()
{"op" : "query",               #操作类型,有insert、query、update、remove、getmore、command"ns" : "crm.customer",        #操作的集合"command" : {                 #操作的集合"find" : "customer","filter" : {"stores" : 909,"companyId" : 999},"sort" : {"_id" : -1},"limit" : 100000,},"cursorid" : NumberLong("8994141675609999540"),"keysExamined" : 24221,"docsExamined" : 24221,"hasSortStage" : true,"nreturned" : 101,      #返回的记录数。例如,profile命令将返回一个文档(一个结果文件),因此ntoreturn值将为1。limit(5)命令将返回五个文件,因此ntoreturn值是5。如果ntoreturn值为0,则该命令没有指定一些文件返回,因为会是这样一个简单的find()命令没有指定的限制。"ntoskip" : 0,     #skip()方法指定的跳跃数"nscanned" : 304,  #扫描数量"keyUpdates" : 0,  #索引更新的数量,改变一个索引键带有一个小的性能开销,因为数据库必须删除旧的key,并插入一个新的key到B-树索引"numYield" : 0,    #该查询为其他查询让出锁的次数"lockStats" : {    #锁信息,R:全局读锁;W:全局写锁;r:特定数据库的读锁;w:特定数据库的写锁"timeLockedMicros" : {     #锁"r" : NumberLong(19467),"w" : NumberLong(0)},"timeAcquiringMicros" : {  #锁等待"r" : NumberLong(7),"w" : NumberLong(9)}},"ts" : ISODate("2020-11-18T02:40:53.138Z"),    #语句执行的时间"client" : "192.168.0.140",                    #链接ip或则主机"allUsers" : [],"user" : ""                                    #用户
}

三、日常使用的查询

##返回最近的10条记录
db.system.profile.find().limit(10).sort({ ts : -1 }).pretty()##返回所有的操作,除command类型的
db.system.profile.find( { op: { $ne : 'command' } } ).pretty()##返回特定集合
db.system.profile.find( { ns : 'mydb.test' } ).pretty()##返回大于5毫秒慢的操作
db.system.profile.find( { millis : { $gt : 5 } } ).pretty()##从一个特定的时间范围内返回信息
db.system.profile.find({ts : {$gt : new ISODate("2020-11-17T09:00:00Z") ,$lt : new ISODate("2020-11-17T09:40:00Z")}}).pretty()#特定时间,限制用户,按照消耗时间排序
db.system.profile.find({ts : {$gt : new ISODate("2020-11-17T09:00:00Z") ,$lt : new ISODate("2020-11-17T09:40:00Z")}},{ user : 0 }).sort( { millis : -1 } )

MongoDB 慢查询优化相关推荐

  1. mongodb聚合查询优化_MongoDB聚合查询详解

    聚合操作主要用于处理数据并返回计算结果.聚合操作将来自多个文档的值组合在一起,按条件分组后,再进行一系列操作(如求和.平均值.最大值.最小值)以返回单个结果. MongoDB 提供了三种执行聚合的方法 ...

  2. mongodb聚合查询优化_【MongoDB】MongoDB 性能优化 - BI查询聚合

    最全的Java后端知识体系每天更新中.... 在BI服务中通过查询聚合语句分析定位慢查询/聚合分析,小结如下: 慢查询定位: 通过Profile分析慢查询 对于查询优化: 通过添加相应索引提升查询速度 ...

  3. python mongodb查询速度优化_Mongodb 3 查询优化(语句优化、建索引)

    一.explain(),语句分析工具 MongoDB 3.0之后,explain的返回与使用方法与之前版本有了很大的变化,介于3.0之后的优秀特色和我们目前所使用给的是3.0.7版本,本文仅针对Mon ...

  4. 在Ubuntu 14.04 64bit上安装MongoDB并测试

    临时需要使用python来操作mongoDB, 网上搜索发现很多文档都已经非常陈旧了, 并不符合目前3.0版本的安装配置, 特此自己整理一下, 以作备忘. MongoDB简介 MongoDB(http ...

  5. 学习Mongodb(一)

    图片摘录自陈彦铭出品2012.5的<10天掌握MongDB> MongoDB的特点 --->面向集合存储,易于存储对象类型的数据 --->模式自由 --->支持动态查询 ...

  6. MongoDB的介绍和使用场景

    MongoDB 是一个高性能,开源,无模式的文档型数据库,是当前 NoSQL 数据库产品中最热门的一种.它在许多场景下可用于替代传统的关系型数据库或键/值存储方式,MongoDB 使用 C++开发.M ...

  7. MongoDB 2.5 版本将提供新的查询引擎

    MongoDB 2.5.0 (开发版本)中,包含了一个新的查询引擎实现.查询引擎主要的工作是通过查询条件,查询到匹配的数据.当然,这其中包括对索引的使用.现有的查询引擎在MongoDB发布的4年以来基 ...

  8. 浅析MongoDB数据库的海量数据存储应用

    [摘要]当今已进入大数据时代,特别是大规模互联网web2.0应用不断发展及云计算所需要的海量存储和海量计算发展,传统的关系型数据库已无法满足这方面的需求.随着NoSQL数据库的不断发展和成熟,可以较好 ...

  9. 查看MongoDB索引的使用,管理索引

    前一篇简单介绍了索引,并给出了基本的索引使用,这一次,我们进一步说一下MongoDB中的索引,包括如何查看查询是否走索引,如何管理索引和地理空间索引等. [使用explain和hint] 前面讲高级查 ...

最新文章

  1. mac设置linux环境,如何在mac或者linux配置oh-my-zsh
  2. 虚拟函数的静态决议 和 RTTI 小例子
  3. 设计模式的理解:命令模式 (Command)
  4. BZOJ2329: [HNOI2011]括号修复(Splay)
  5. 打包文档_苏教版小学数学16年级全十二册教案Word文档打包下载
  6. oracle 表导入到powerDesigner 中
  7. sicily 1012. Stacking Cylinders
  8. a标签获取input值_HTML5常用标签
  9. java 内存分析 ibm_IBM内存检测工具(IBM Thread and Monitor Dump Analyzer for Java)
  10. 20k超声波电路原理图讲解_超声波液位开关和液位开关的区别,它们的工作原理分别是什么?...
  11. 机器学习笔记(三十一):集成学习
  12. 关于近段时间学习历史的点滴记录
  13. linux的应用界面设计,技术|Xperience UI 设计理念:优雅的 Linux 桌面设计欣赏
  14. 美元对全球汇率 免费 api
  15. Infor XA ERP运维常用SQL
  16. 利用Python3四舍五入保留两位小数
  17. 一个应届生拿字节跳动offer的努力,整整用了一年的时间
  18. 猛学亚马逊:顾客至上 Obsession over customers
  19. 使用Qt二次开发周立功CAN(一)
  20. CHIL-SQL-快速参考

热门文章

  1. 树莓派基础实验1:双色LED灯实验
  2. 若依项目springcloud启动
  3. Springboot实现PDF预览、下载、读取
  4. exp导出excel oracle_oracle导出excel
  5. 浅谈搜索引擎技术原理与架构
  6. 【史上最全】Ambari 大数据集群运维与管理操作指南
  7. rman的配置和备份
  8. 什么是单电源运放,什么是双电源运放?
  9. 情人节程序员用HTML网页表白【七夕烟花】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
  10. 2022-2027年中国装饰装潢行业发展前景及投资战略咨询报告