-- ===========================
-- mongodb slow query log
-- ===========================

Reference: http://docs.mongodb.org/manual/tutorial/manage-the-database-profiler/

Profiling Levels:
1 resume
 0 - the profiler is off, does not collect any data.
 1 - collects profiling data for slow operations only. By default slow operations are those slower than 100 milliseconds.
  You can modify the threshold for “slow” operations with the slowms
runtime option or the setParameter command. See the Specify the
Threshold for Slow Operations section for more information.
 2 - collects profiling data for all database operations.

2 able
2.1
db.setProfilingLevel(1,500);
db.setProfilingLevel(2,500);
PRIMARY> db.setProfilingLevel(1,500);
{ "was" : 0, "slowms" : 500, "ok" : 1 }
PRIMARY>
PRIMARY>
PRIMARY>
PRIMARY> db.setProfilingLevel(1,500);
{ "was" : 1, "slowms" : 500, "ok" : 1 }
PRIMARY>
PRIMARY>
PRIMARY>
疑问:为什么需要set2次才能生效?
0代表关闭,1代表只记录slowlog,2代表记录所有操作,这里我们设置成了500,也就是500ms

2.2 check the status
PRIMARY> db.getProfilingStatus();
{ "was" : 2, "slowms" : 500 }
PRIMARY> db.getProfilingLevel();
PRIMARY>

2.3 see the last log info
db.system.profile.find().sort({$natural:-1}) 
PRIMARY> db.system.profile.find().sort({$natural:-1}) 
{ "ts" : ISODate("2013-05-14T08:13:37.098Z"), "op" : "insert", "ns" :
"test.tickets", "millis" : 0, "client" : "127.0.0.1", "user" : "" }
{ "ts" : ISODate("2013-05-14T08:13:37.098Z"), "op" : "insert", "ns" :
"test.tickets", "millis" : 0, "client" : "127.0.0.1", "user" : "" }
{ "ts" : ISODate("2013-05-14T08:13:37.098Z"), "op" : "insert", "ns" :
"test.tickets", "millis" : 0, "client" : "127.0.0.1", "user" : "" }
PRIMARY>
ts:时间戳
op: 操作类型
ns:执行操作的对象集合
millis:操作所花时间,毫秒
client: 执行操作的客户端
user: 执行操作的mongodb连接用户

2.4 可以在mongodb启动之初设置slow生效
直接加在启动命令中:mongod --profile=1 --slowms=15
或者在配置文件中写好 用-f强制加载配置文件启动mongodb
profile=1
slowms=1000
[] 在replicaset中,必须把一个个instance都生效才行。每一个都需要生效一次。

3 see the log
db.system.profile.find().limit(10).sort( { ts : -1 } ).pretty();
db.system.profile.find().limit(10).sort( { ts : 1 } ).pretty();

4 Disable Profiling
To disable profiling, use the following helper in the mongo shell: set the default value 0;
db.setProfilingLevel(0)

5 当profile表过小时,调整表大小为4MB
db.setProfilingLevel(0)   -- profile失效
db.system.profile.drop()   -- 删除
db.createCollection( "system.profile", { capped: true, size:4000000 } )    -- 重建
db.setProfilingLevel(1)  -- profile生效

6 查看出来的慢mongo命令
6.1 显示最新的5条操作记录
show profile;

6.2 显示结果分析,查询大于5毫秒的slow command。
db.system.profile.find().sort({millis:-1}).limit(10);
db.system.profile.find( { millis : { $gt : 5 } } ).pretty();
{
        "ts" : ISODate("2013-01-16T18:26:18.041Z"),
        "op" : "query",  -- 执行类型
        "ns" : "ssodatabase.exchangetickets", -- 执行collection名称
        "query" : {
                "xid" : "X15e1481688254bc9a94701b3aa9e7abc627971358360754783"
        },  -- 执行的内容
        "ntoreturn" : 1,
        "nscanned" : 382793,
        "nreturned" : 1,
        "responseLength" : 605,
        "millis" : 5841, -- 执行的时间
        "client" : "10.100.10.161",  -- 执行的客户端
        "user" : "" -- 执行的mongo用户
}
观察结果中的"query"字段。  没有直接db.test.insert({xxxxxxx.....})这样显示的,需要你自己根据query字段去拼接取值.

7 返回特定时间的慢查询记录
7.1普通的时间短查询
db.system.profile.find(
                       {
                        ts : {
                              $gt : new ISODate("2013-05-09T03:00:00Z") ,
                              $lt : new ISODate("2013-05-17T03:40:00Z")
                             }
                       }
                      ).pretty();

run the command, follows:
       PRIMARY> db.system.profile.find(
...                        {
...                         ts : {
...                               $gt : new ISODate("2013-05-09T03:00:00Z") ,
...                               $lt : new ISODate("2013-05-17T03:40:00Z")
...                              }
...                        }
...                       ).pretty();

{
        "ts" : ISODate("2013-05-14T08:36:58.691Z"),
        "op" : "query",
        "ns" : "ssodatabase.digitalriverorderdetails",
        "query" : {
                "invoiceId" : "15539232823"
        },
        "ntoreturn" : 1,
        "nscanned" : 1,
        "nreturned" : 1,
        "responseLength" : 1213,
        "millis" : 663,
        "client" : "10.100.10.162",
        "user" : "admin"
}
{
        "ts" : ISODate("2013-05-14T09:17:58.911Z"),
        "op" : "insert",
        "ns" : "ssodatabase.tickets",
        "millis" : 527,
        "client" : "10.100.10.154",
        "user" : "admin"
}
{
        "ts" : ISODate("2013-05-14T09:20:58.648Z"),
        "op" : "insert",
        "ns" : "ssodatabase.tickets",
        "millis" : 529,
        "client" : "10.100.10.153",
        "user" : "admin"
}      
......

7.2 带执行时间倒序排序,并且只输出用户信息
db.system.profile.find(
                       {
                         ts : {
                               $gt : new ISODate("2013-05-09T03:00:00Z")  ,
                               $lt : new ISODate("2013-05-17T09:40:00Z")
                              }
                       },
                       { user : 1 } -- 只输出用户信息
                      ).sort( { millis : -1 } ) -- 倒序排序
 
PRIMARY> db.system.profile.find(
...                        {
...                          ts : {
...                                $gt : new ISODate("2013-05-09T03:00:00Z")  ,
...                                $lt : new ISODate("2013-05-17T09:40:00Z")
...                               }
...                        },
...                        { user : 1 }
...                       ).sort( { millis : -1 } )
{ "user" : "admin" }
{ "user" : "admin" }
{ "user" : "admin" }
{ "user" : "admin" }
{ "user" : "admin" }
{ "user" : "admin" }
{ "user" : "admin" }
{ "user" : "admin" }
{ "user" : "admin" }
{ "user" : "admin" }
{ "user" : "admin" }
{ "user" : "admin" }
{ "user" : "admin" }
{ "user" : "admin" }
{ "user" : "admin" }
{ "user" : "admin" }
{ "user" : "admin" }
{ "user" : "admin" }
{ "user" : "admin" }
{ "user" : "admin" }

7.3 带执行时间倒序排序,并且只输出用户信息
db.system.profile.find(
                       {
                         ts : {
                               $gt : new ISODate("2013-05-09T03:00:00Z")  ,
                               $lt : new ISODate("2013-05-17T09:40:00Z")
                              }
                       }
                      ).sort( { millis : -1 } )  -- 倒序排序

url:http://blog.csdn.net/mchdba/article/details/8950632

Mongodb慢查询笔记 (Mongodb slow query log)的更多相关文章

  1. MySQL:动态开启慢查询日志(Slow Query Log)

    前言 在开发中,高效能的程序 也包括 高效能的查询,所以优化SQL也是程序员必要技能之一.要优化就必须要有慢日志记录才可以知道哪些查询慢,然后反向去修改 慢日志设置方式 写入文件 写入数据库 实践操作 ...

  2. mysql中slow query log慢日志查询分析

    在mysql中slow query log是一个非常重要的功能,我们可以开启mysql的slow query log功能,这样就可以分析每条sql执行的状态与性能从而进行优化了. 一.慢查询日志 配置 ...

  3. mysql慢查询Slow Query Log和未使用索引(Not Using Indexes)查询配置和使用

    mysql的“慢查询”指的是超过了允许的最大查询时间(long_query_time)的sql语句,而“未使用索引”查询顾名思义就是查询语句没有使用到索引的sql语句. 慢查询配置和使用 在msyql ...

  4. MySQL 慢查询日志(Slow Query Log)

    同大多数关系型数据库一样.日志文件是MySQL数据库的重要组成部分.MySQL有几种不同的日志文件.通常包含错误日志文件,二进制日志,通用日志.慢查询日志.等等.这些日志能够帮助我们定位mysqld内 ...

  5. Mysql slow query log

    一.概念部分:  顾名思义,慢查询日志中记录的是执行时间较长的query,也就是我们常说的slow query,通过设--log-slow-queries[=file_name]来打开该功能并设置记录 ...

  6. MySQL专题 2 数据库优化 Slow Query log

    MySQL Server 有四种类型的日志——Error Log.General Query Log.Binary Log 和 Slow Query Log. 第一个是错误日志,记录 mysqld 的 ...

  7. MySQL四种类型日志:Error Log、General Query Log、Binary Log、Slow Query Log

    MySQL Server 有四种类型的日志——Error Log.General Query Log.Binary Log 和 Slow Query Log. 第一个是错误日志,记录mysqld的一些 ...

  8. mongodb慢查询记录

    在 MySQL中,慢查询日志是经常作为我们优化数据库的依据,那在MongoDB中是否有类似的功能呢?答案是肯定的,那就是Mongo Database Profiler.不仅有,而且还有一些比MySQL ...

  9. mongoDB 高级查询语法

    http://www.cnblogs.com/ITAres/articles/2084794.html本文参考自官方的手册:http://www.mongodb.org/display/DOCS/Ad ...

随机推荐

  1. bzoj 4031: [HEOI2015]小Z的房间【矩阵树定理】

    是板子题,因为mod不是质数所以需要辗转相除然而并不知道为啥 高斯消元部分还不知道原理呢--先无脑背过的 #include<iostream> #include<cstdio> ...

  2. Springboot 三种拦截Rest API的方法-过滤器、拦截器、切片

    过滤器方式实现拦截(Filter) 通过继承Servlet的Filter类来实现拦截: @Component public class TimeFilter implements Filter { @ ...

  3. phpAnalysis调试接口

    phpAnalysis是一款轻量级非侵入式PHP应用性能分析器,适用于开发.测试及生产环境部署使用,方便开发及测试工程师诊断性能问题: 通过tideways收集PHP程序单步运行过程中所有的函数调用时 ...

  4. HTML5 WEB Storage - localStorage存储位置在哪

    localStorage作为客户端浏览器持久化存储方案 这个是浏览器隔离的,每个浏览器都会把localStorage存储在自己的UserData中,如chrome一般就是 C:\Users\你的计算机 ...

  5. json常识

    转载网址:http://developer.51cto.com/art/201704/536386.htm   我们先来看一个JS中常见的JS对象序列化成JSON字符串的问题. 请问:以下JS对象通过 ...

  6. [ CCO 2015 ] Artskjid

    \(\\\) \(Description\) \(N\)个点\(M\)条边的有向图,求从\(0\)号节点出发,\(N-1\)号节点结束,且图中每个点至多经过一次的最长路. \(N\in[2,18]\) ...

  7. PLC学习资料

    常用字母 X 输入点(I)可连接外部输入信号 如感应器或限位/按钮等M 内部辅助继电器S 内部步进 不作步进使用时,可用作内部辅助继电器T 时间继电器 内部使用C计数器 内部使用Y输出点(O)输出给外 ...

  8. Python多线程爬图&Scrapy框架爬图

    一.背景 对于日常Python爬虫由于效率问题,本次测试使用多线程和Scrapy框架来实现抓取斗图啦表情.由于IO操作不使用CPU,对于IO密集(磁盘IO/网络IO/人机交互IO)型适合用多线程,对于 ...

  9. POJ_2239_Selecting Courses

    题意:一周上7天课,每天12节课,学校最多开设300节不同的课,每周每种课可以只有一个上课时间或者多个上课时间(上课内容一样),问一周最多可以选多少节课. 分析:二分图最大匹配,将一周84个时间点和可 ...

  10. Sturts2几个常用内建拦截器的介绍

    Sturts2几个常用内建拦截器的介绍:1)conversation:这是一个处理类型转换错误的拦截器,它负责将类型转换错误从ActionContext中取出,并转换成Action的FieldErro ...