mongo开启关闭慢sql查询,以及查看慢sql信息,创建删除查看mongo索引

MongoDB 的 慢查询

MongoDB 的 慢查询记录储存在 system.profile 里,默认情况下是关闭的,我们可以在数据库级别上或者是节点级别上配置。

开启 Profiling 功能

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

启动MongoDB时加上–profile=级别 即可。

也可以在客户端调用db.setProfilingLevel(级别) 命令来实时配置。可以通过db.getProfilingLevel()命令来获取当前的Profile级别。

use dbName;
#如果db有密码
#db.auth('name','passwd');
#记录所有db的命令,默认记录的超时时间是100ms
db.setProfilingLevel(2); 
#或者正在开启慢查询的时候指定记录信息的超时时间,下面deo是记录超过10ms的语句
#db.setProfilingLevel( 1 , 10 );
{"was" : 0 , "ok" : 1} 
db.getProfilingLevel()

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

  • 0 : 不开启
  • 1 : 记录慢命令 (默认为>100ms)
  • 2 : 记录所有命令

查看慢sql信息

列出执行时间长于某一限度(5ms)的 Profile 记录:

db.system.profile.find( { millis : { $gt : 5 } } ) 
{"ts" : "Thu Jan 29 2009 15:21:27 GMT-0500 (EST)" , "info" : "query test.foo ntoreturn:0 exception bytes:53" , "millis" : 88}

查看最近3条 慢请求,{$natrual: -1} 代表按插入顺序逆序

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

查看最新的 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 }

3个字段的意义:

  • ts:时间戳
  • info:具体的操作
  • millis:操作所花时间,毫秒

explain 功能查看mongo对查询时使用索引后的优化结果

demo
通过查询 age < 10 的数据来观察索引的时候情况

db.tableName.find({age:{$lt:10}}).explain();

MongoDB使用 createIndex() 方法来创建索引

语法

db.tableName.createIndex(keys, options)

demo

db.tableName.createIndex({"title":1})

语法中 Key 值为你要创建的索引字段,1 为指定按升序创建索引,如果你想按降序来创建索引指定为 -1 即可。

createIndex() 方法中你也可以设置使用多个字段创建索引(关系型数据库中称作复合索引)。

db.tableName.createIndex({"title":1,"description":-1})

mongo索引相关限制

  • 集合中索引不能超过64个
  • 索引名的长度不能超过128个字符
  • 一个复合索引最多可以有31个字段

查看mongo集合索引

查看集合索引

db.tableName.getIndexes()

查看集合索引大小
db.tableName.totalIndexSize()

删除mongo集合指定索引

删除指定索引

db.tableName.dropIndex("索引名称")

删除集合所有索引

db.col.dropIndexes()

查看最后几条数据

可以从此查询中看到最近添加的N条记录(从最近到最近):

db.collection.find().skip(db.collection.count() - N)

sort() , limit() , skip()语法
sort按照某个字段排序,limit就是limit,skip就是在结果集中从前往后跳过几条记录

db.collections.find().sort({key:value}).limit(int value).skip(some int value);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值