简介

使用Mysql数据库的朋友,肯定知道,可以开启慢查询日志,就能捕获Mysql数据库中的慢SQL语句了,那么在Mongo数据库怎么捕获慢查询呢,下面就一步步带大家了解Mongo数据库的慢查询功能的开启和使用的。
开启Mongo数据库的慢查询功能

Mongo数据库的慢查询功能(Profiling)有三个级别 0:代表关闭,不收集任何慢查询 1:收集慢查询数据,默认收集超过100毫秒的慢查询 2:收集任何操作记录数据
默认情况下,Mongo数据库的慢查询功能是关闭的,如果想要知道Mongo数据库是否已经开启慢查询功能,可以通过下面命令

> db.getProfilingLevel()
0

可以看到返回结果是0,Mongo数据库没有开启慢查询功能。
开启Mongo数据库的慢查询功能 在这里需要注意,Mongo数据库的慢查询数据是存放在一个数据库集合中(system.profile),这个和Mysql数据库是有区别的,如果你不主动创建system.profile这个集合,那这个集合就固定1M大小,当慢查询记录超过1M,就会将历史数据覆盖,循环使用,所以在这里需要根据业务实际情况设置集合大小。
在这里需要大家注意的是,system.profile在哪个数据库下创建,就只会收集这个数据库下的慢查询,在这里,我在test数据库下创建system.profile集合,操作过程如下所示

> use test
switched to db admin
> db.createCollection( "system.profile", { capped: true, size: 1024*1024*10 } )
{ "ok" : 1 }
> show tables;
customers
system.profile
user

开启慢查询功能

> db.setProfilingLevel(1, { slowms: 500 })
{ "was" : 0, "slowms" : 100, "sampleRate" : 1, "ok" : 1 }
> db.getProfilingStatus()
{ "was" : 1, "slowms" : 500, "sampleRate" : 1 }

这里设置的Profiling级别为1,慢查询阈值为500毫秒。
慢查询功能测试

这里为了方便测试,将慢查询的级别设置为2

> db.setProfilingLevel(2)
{ "was" : 1, "slowms" : 500, "sampleRate" : 1, "ok" : 1 }
> db.getProfilingStatus()
{ "was" : 2, "slowms" : 500 "sampleRate" : 1 }

模式集合的查询

> db.user.find()
{ "_id" : ObjectId("5fbf52c182be1e071c0db8ef"), "username" : "jim", "age" : 18, "status" : 0 }
{ "_id" : ObjectId("5fbf530082be1e071c0db8f0"), "username" : "tony", "age" : 28, "status" : 0 }
{ "_id" : ObjectId("5fbf530082be1e071c0db8f1"), "username" : "trace" }
{ "_id" : ObjectId("5fbf53b382be1e071c0db8f2"), "username" : "tony1" }
{ "_id" : ObjectId("5fbf53b382be1e071c0db8f3"), "username" : "trace1" }
> db.system.profile.find()
{ "op" : "query", "ns" : "test.user", "command" : { "find" : "user", "filter" : {  }, "lsid" : { "id" : UUID("7424ffd1-52d9-48b1-b658-9adfd3189a89") }, "$db" : "test" }, "keysExamined" : 0, "docsExamined" : 5, "cursorExhausted" : true, "numYield" : 0, "nreturned" : 5, "locks" : { "ReplicationStateTransition" : { "acquireCount" : { "w" : NumberLong(1) } }, "Global" : { "acquireCount" : { "r" : NumberLong(1) } }, "Database" : { "acquireCount" : { "r" : NumberLong(1) } }, "Collection" : { "acquireCount" : { "r" : NumberLong(1) } }, "Mutex" : { "acquireCount" : { "r" : NumberLong(1) } } }, "flowControl" : {  }, "responseLength" : 379, "protocol" : "op_msg", "millis" : 0, "planSummary" : "COLLSCAN", "execStats" : { "stage" : "COLLSCAN", "nReturned" : 5, "executionTimeMillisEstimate" : 0, "works" : 7, "advanced" : 5, "needTime" : 1, "needYield" : 0, "saveState" : 0, "restoreState" : 0, "isEOF" : 1, "direction" : "forward", "docsExamined" : 5 }, "ts" : ISODate("2020-12-03T09:49:45.211Z"), "client" : "127.0.0.1", "appName" : "MongoDB Shell", "allUsers" : [ ], "user" : "" }

从上面结果可以看到,已经捕获到慢查询了。

Mongo数据库慢查询功能相关推荐

  1. python oracle query,python链接oracle/plsql数据库 ,查询功能(query) 用cursor fetchall

    1. 准备工作 下载安装Oracle instant client 先在"开始"里搜一下有没有instantclient这个文件夹,如果有的话,就不用下载. oracle inst ...

  2. 9203-1117-实现数据库的查询功能

    需求 实现用户登陆的验证 程序启动 提示用户输入帐号和密码 只要用户成功输入 显示功能菜单 登陆系统的实现 为了保存用户的数据帐号密码信息 我们需建一个用户表 需要有帐号列,需要有密码的列 实现代码 ...

  3. 进一寸有进一寸的欢喜,谈谈如何优化 Milvus 数据库的向量查询功能

    ✏️ 编者按 每年暑期,Milvus 社区都会携手中科院软件所,在「开源之夏」活动中为高校学生们准备丰富的工程项目,并安排导师答疑解惑.张煜旻同学在「开源之夏」活动中表现优秀,他相信进一寸有进一寸的欢 ...

  4. MySQL——MySQL的数据查询功能

    MySQL的数据查询功能 SQL查询的7个关键词--以链家二手房数据为例 在实际工作中,使用最多的就是数据库的查询功能了.在数据查询过程中,通常会用到以下7个核心关键词: SELECT <sel ...

  5. SpringBoot整合MyBatis并实现简单的查询功能

    学了SpringBoot整合MyBatis才知道什么叫做省事,想当初用SSM的时候,那配置是真的多,SpringBoot真的是太友好了,到底有多好,接下来演示一个对数据库的查询功能,然初学者的我们大开 ...

  6. pythonsqlite3模糊_Python编写通讯录通过数据库存储实现模糊查询功能

    1.要求 数据库存储通讯录,要求按姓名/电话号码查询,查询条件只有一个输入入口,自动识别输入的是姓名还是号码,允许模糊查询. 2.实现功能 可通过输入指令进行操作. (1)首先输入"add& ...

  7. JDBC连接(MySql)数据库步骤,以及查询、插入、删除、更新等十一个处理数据库信息的功能。...

    主要内容:  JDBC连接数据库步骤. 一个简单详细的查询数据的例子. 封装连接数据库,释放数据库连接方法. 实现查询,插入,删除,更新等十一个处理数据库信息的功能.(包括事务处理,批量更新等) 把十 ...

  8. jdbc mysql 存储过程查询数据_JDBC连接(MySql)数据库步骤,以及查询、插入、删除、更新等十一个处理数据库信息的功能。...

    主要内容: JDBC连接数据库步骤. 一个简单详细的查询数据的例子. 封装连接数据库,释放数据库连接方法. 实现查询,插入,删除,更新等十一个处理数据库信息的功能.(包括事务处理,批量更新等) 把十一 ...

  9. Spring5框架基础详解(五)(JdbcTemplate概念和准备、jdbcTemplate操作数据库添加功能、修改和删除功能、查询功能)

    文章目录 一.JdbcTemplate是什么和准备工作 1.1.引入相关maven依赖 1.2在spring配置文件配置数据库连接 1.3配置JdbcTemplate对象,注入DateSource 1 ...

最新文章

  1. Java 性能优化的五大技巧
  2. 5G NR 定时提前 Timing advance
  3. MVC 页面传参到另一个页面
  4. 前端开发从项目中获得什么_我如何获得副项目的前10个客户以及从他们那里学到的东西...
  5. python之字符编码(四)
  6. 数据科学包5- pandas基础之基础运算
  7. 技术实力 gw4c20b型2.0t汽油发_自动挡轻客B型房车底盘,大通与依维柯哪家强?...
  8. EGE程序打包发布与图标修改
  9. sht21 c语言程序,SHT20,SHT21程序代码.pdf
  10. div中border属性
  11. 求助文,缺少stubs-n32_hard.h
  12. 【Ubuntu】Ubuntu20.04安装GPU显卡驱动
  13. 什么是Apache?Apache是什么意思?
  14. kotlin 开发桌面应用_2020-21年Kotlin应用开发十大公司
  15. mediasoup 管道通信类UnixStreamSocket分析
  16. 数据库 MySQL 中 DQL 数据库查询语言(特别重要)
  17. gtx1050ti和gtx1050的区别
  18. loaderruner
  19. 红杉中国战略投资诺亚财富
  20. navicat 使用代理跳板机(nginx)连接远程服务器mysql数据库

热门文章

  1. 数据库decimal对应java什么类型_mysql decimal(10,2)对应java类型
  2. 密度图的密度估计_R-ggridges包:山峰叠峦图
  3. java怎么限制一个对象的内存_java对象的内存布局及创建过程
  4. KNN算法之图像处理二
  5. 我写的这些opensource项目
  6. 公司软件架构设计的现状分析 第二弹
  7. Oracle常用操作命令
  8. Converse3D 引擎介绍
  9. 6、mysql与suse查看版本信息
  10. Node——设置响应报文头实现下载