Mongodb profile(慢查询日志)

在MySQL中,慢查询日志是经常作为我们优化数据库的依据,那在MongoDB中是否有类似的功能呢?答案是肯定的,那就是MongoDB Database Profiler。所以MongoDB 不仅有,而且还有一些比MySQL的Slow Query Log更详细的信息。

开启 Profiling  功能

有两种方式可以控制 Profiling  的开关和级别,第一种是直接在启动参数里直接进行设置。 启动MongoDB时加上–profile=级别  即可。

也可以在客户端调用 db.setProfilingLevel(级别)  命令来实时配置,Profiler  信息保存在 system.profile 中。我们可以通过db.getProfilingLevel()命令来获取当前的Profile级别,类似如下操作

db.setProfilingLevel(2);

上面profile的级别可以取0,1,2  三个值,他们表示的意义如下:

0 –  不开启

1 –  记录慢命令 (默认为>100ms)

2 –  记录所有命令

Profile  记录在级别 1 时会记录慢命令,那么这个慢的定义是什么?上面我们说到其默认为100ms,当然有默认就有设置,其设置方法和级别一样有两种,一种是通过添加–slowms 启动参数配置。第二种是调用db.setProfilingLevel时加上第二个参数:

db.setProfilingLevel( 1 , 10 );

查询 Profiling  记录 

与 MySQL 的慢查询日志不同,MongoDB Profile  记录是直接存在系统 db 里的,记录位置 system.profile  ,所以,我们只要查询这个 Collection 的记录就可以获取到我们的 Profile  记录了。列出执行时间长于某一限度(5ms)的 Profile  记录:

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

查看最新的 Profile  记录:

db.system.profile.find().sort({$natural:-1}).limit(1)

{ "ts" : ISODate("2012-05-20T16:50:36.321Z"), "info" : "query test.system.profile reslen:1219

nscanned:8  \nquery: { query: {}, orderby: { $natural: -1.0 } }  nreturned:8 bytes:1203", "millis" :

0 }

字段说明

ts:  该命令在何时执行

info:  本命令的详细信息

reslen:  返回结果集的大小

nscanned:  本次查询扫描的记录数

nreturned:  本次查询实际返回的结果集

millis:  该命令执行耗时,以毫秒记

MongoDB Shell  还提供了一个比较简洁的命令 show profile,可列出最近5 条执行时间超过

1ms的 Profile  记录。

时间: 2024-09-30 06:16:36

Mongodb profile(慢查询日志)的相关文章

mongodb+python 实现自动收集mongodb的慢查询日志(附代码)

  1  简介  这个是用在生产环境中的一个MongoDB慢查询日志自动收集脚本,当初想写这个脚本的思路就是为了方便收集慢查询日志并且利于分析.由于公司的mognodb不多,就4台,所以这个小脚本也只是适用普通的生产环境. 页面主要使用了 bootstrap 为前端显示,datatable 为分析的时候使用.   2  流程 主要的流程是: 1  通过 pymongo 连接到 mongodb 2  使用find()命令查询 system.profile下的所有慢查询日志 3  使用jinjia2

mongodb 之慢查询

mongodb中慢查询日志 1.开启查询日志. (1)动态开启,可以选择性的对指定DB开启慢查询日志,但服务器重启后慢查询日志又要人工手动开启. db.setProfilingLevel(1,300) setProfilingLevel有两个参数,第一参数表示慢查询日志开关(可使用的值为0,1,2 0:表示关闭慢查询日志,1:表示开启慢查询日志,2:表示记录所有数据库中的查询), 第二个参数为慢查询阀值,单位是毫秒,默认情况下阀值为100ms. (2).配置文件中开启,永久生效.对所有的数据DB

MongoDB中4种日志的详细介绍

前言 任何一种数据库都有各种各样的日志,MongoDB也不例外.MongoDB中有4种日志,分别是系统日志.Journal日志.oplog主从日志.慢查询日志等.这些日志记录着MongoDB数据库不同方面的踪迹.下面分别介绍这几种日志. 系统日志 系统日志在MongoDB数据库中很重要,它记录着MongoDB启动和停止的操作,以及服务器在运行过程中发生的任何异常信息. 配置系统日志的方法比较简单,在启动mongod时指定logpath参数即可 ? 1 mongod -logpath=/data/

Mysql--慢查询日志之一

慢查询日志 1.当查询超过一定时间没有返回结果的时候,才会记录进慢查询日志. 2.慢查询日志可以帮助DBA找出执行效率缓慢的SQL语句,为数据库优化工作提供帮助. 3.慢查询日志默认是不开启的,也没必要一直开启.(如果开启必定会消耗系统的性能) 4.当需要进行采样分析时手工开启. 慢查询日志相关参数 mysql.cnf中修改以下配置后,需要重新启动数据库服务使之生效. slow_query_log=on|off---是否开启慢查询日志 slow_query_log_file=filename--

MySQL慢查询(二) - pt-query-digest详解慢查询日志

一.简介 pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog.General log.slowlog,也可以通过SHOWPROCESSLIST或者通过tcpdump抓取的MySQL协议数据来进行分析.可以把分析结果输出到文件中,分析过程是先对查询语句的条件进行参数化,然后对参数化以后的查询进行分组统计,统计出各查询的执行时间.次数.占比等,可以借助分析结果找出问题进行优化. 二.安装pt-query-digest 1.下载页面:https://www.pe

MongoDB 进阶-关联查询

[苏州需要工作的加我QQ,内推介绍费平分] MongoDB 进阶 1.数据库命令 a.命令的工作原理 drop命令,在shell中删除一个集合,执行db.refactor.drop().其实这个函数实际运行的是drop命令, 可以用runCommand来达到一样的效果: db.runCommand({"drop":"refactor"}) {         "nIndexesWas" : 1,         "msg" :

mysql慢查询日志进行按库切割重写文件然后分析

需求: 把每天的慢查询日志进行按库切割 对每个库的慢查询日志进行分析 思路: 工具/功能 一般统计信息 高级统计信息 脚本 优势 mysqldumpslow 支持 不支持 perl mysql官方自带 mysqlsla 支持 支持 perl 功能强大,数据报表齐全,定制化能力强. mysql-explain-slow-log 支持 不支持 perl 无 mysql-log-filter 支持 部分支持 python or php 不失功能的前提下,保持输出简洁 myprofi 支持 不支持 ph

MySQL慢查询(二) - pt-query-digest详解慢查询日志 pt-query-digest 慢日志分析

随笔 - 66 文章 - 0 评论 - 19 MySQL慢查询(二) - pt-query-digest详解慢查询日志 一.简介 pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog.General log.slowlog,也可以通过SHOWPROCESSLIST或者通过tcpdump抓取的MySQL协议数据来进行分析.可以把分析结果输出到文件中,分析过程是先对查询语句的条件进行参数化,然后对参数化以后的查询进行分组统计,统计出各查询的执行时间.次数.占比等

Anemometer+Percona Toolki实现MySQL慢查询日志可视化功能

最近发现了一个挺好用的MySQL慢查询日志可视化的工具,网上也能找到很多资料,在这里结合自己的实际情况重新整理一下. 1. 实验环境 1.1 系统环境: 操作系统:CentOS 6.5 64位 主机地址:10.0.0.26 主机名:mysql01 mysql版本:mysql-5.6.36 1.2 可视化软件环境: http环境:LAMP 可视化软件:Anemometer-master.zip, percona-toolkit-3.0.11-1.el6.x86_64.rpm, perl-TermR