MongoDB 慢查询优化
一、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 }
备注:要改变Secondary
的system.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 慢查询优化相关推荐
- mongodb聚合查询优化_MongoDB聚合查询详解
聚合操作主要用于处理数据并返回计算结果.聚合操作将来自多个文档的值组合在一起,按条件分组后,再进行一系列操作(如求和.平均值.最大值.最小值)以返回单个结果. MongoDB 提供了三种执行聚合的方法 ...
- mongodb聚合查询优化_【MongoDB】MongoDB 性能优化 - BI查询聚合
最全的Java后端知识体系每天更新中.... 在BI服务中通过查询聚合语句分析定位慢查询/聚合分析,小结如下: 慢查询定位: 通过Profile分析慢查询 对于查询优化: 通过添加相应索引提升查询速度 ...
- python mongodb查询速度优化_Mongodb 3 查询优化(语句优化、建索引)
一.explain(),语句分析工具 MongoDB 3.0之后,explain的返回与使用方法与之前版本有了很大的变化,介于3.0之后的优秀特色和我们目前所使用给的是3.0.7版本,本文仅针对Mon ...
- 在Ubuntu 14.04 64bit上安装MongoDB并测试
临时需要使用python来操作mongoDB, 网上搜索发现很多文档都已经非常陈旧了, 并不符合目前3.0版本的安装配置, 特此自己整理一下, 以作备忘. MongoDB简介 MongoDB(http ...
- 学习Mongodb(一)
图片摘录自陈彦铭出品2012.5的<10天掌握MongDB> MongoDB的特点 --->面向集合存储,易于存储对象类型的数据 --->模式自由 --->支持动态查询 ...
- MongoDB的介绍和使用场景
MongoDB 是一个高性能,开源,无模式的文档型数据库,是当前 NoSQL 数据库产品中最热门的一种.它在许多场景下可用于替代传统的关系型数据库或键/值存储方式,MongoDB 使用 C++开发.M ...
- MongoDB 2.5 版本将提供新的查询引擎
MongoDB 2.5.0 (开发版本)中,包含了一个新的查询引擎实现.查询引擎主要的工作是通过查询条件,查询到匹配的数据.当然,这其中包括对索引的使用.现有的查询引擎在MongoDB发布的4年以来基 ...
- 浅析MongoDB数据库的海量数据存储应用
[摘要]当今已进入大数据时代,特别是大规模互联网web2.0应用不断发展及云计算所需要的海量存储和海量计算发展,传统的关系型数据库已无法满足这方面的需求.随着NoSQL数据库的不断发展和成熟,可以较好 ...
- 查看MongoDB索引的使用,管理索引
前一篇简单介绍了索引,并给出了基本的索引使用,这一次,我们进一步说一下MongoDB中的索引,包括如何查看查询是否走索引,如何管理索引和地理空间索引等. [使用explain和hint] 前面讲高级查 ...
最新文章
- mac设置linux环境,如何在mac或者linux配置oh-my-zsh
- 虚拟函数的静态决议 和 RTTI 小例子
- 设计模式的理解:命令模式 (Command)
- BZOJ2329: [HNOI2011]括号修复(Splay)
- 打包文档_苏教版小学数学16年级全十二册教案Word文档打包下载
- oracle 表导入到powerDesigner 中
- sicily 1012. Stacking Cylinders
- a标签获取input值_HTML5常用标签
- java 内存分析 ibm_IBM内存检测工具(IBM Thread and Monitor Dump Analyzer for Java)
- 20k超声波电路原理图讲解_超声波液位开关和液位开关的区别,它们的工作原理分别是什么?...
- 机器学习笔记(三十一):集成学习
- 关于近段时间学习历史的点滴记录
- linux的应用界面设计,技术|Xperience UI 设计理念:优雅的 Linux 桌面设计欣赏
- 美元对全球汇率 免费 api
- Infor XA ERP运维常用SQL
- 利用Python3四舍五入保留两位小数
- 一个应届生拿字节跳动offer的努力,整整用了一年的时间
- 猛学亚马逊:顾客至上 Obsession over customers
- 使用Qt二次开发周立功CAN(一)
- CHIL-SQL-快速参考