mongo 慢查询配置
我是分片部署,所以慢查询相关的配置是在启动片服务上。
执行查询命令,是在share的primary 上。
1. mongodb慢查询 配置
慢查询数据主要存储在 local库的system.profile集合,该集合主要是一个capped collection。
开启方式两种:
第一种:片服务启动时加启动参数
相关参数如下:
#-----------------------------------------------------------------
--slowms arg (=100) value of slow for profile and console log
--profile arg 0=off 1=slow, 2=all
举例:
mongod -f shard1.conf --profile=1 --slowms=200
第二种:执行命令方式
mongo ip:端口
进入的指定片的服务,注意不是mongo服务,是片服务,你有几个片,就要执行几次。所有我采用第一种方式,执行在每个分片启动命令后加参数
#命令行下设置方式--db.setProfilingLevel(level,slowms)
> db.setProfilingLevel(1,500)
{ "was" : 0, "slowms" : 500, "ok" : 1 } #查看设置
> db.getProfilingStatus()
{ "was" : 0, "slowms" : 500 }
第三种:分片启动配置文件中
operationProfiling:
slowOpThresholdMs: <int>
mode: <string>
The operationProfiling.slowOpThresholdMs setting
Level Setting
off Off. No profiling.
slowOp On. Only includes slow operations.
all On. Includes all operations.
2. 慢查询跟踪
#查看慢查询
db.system.profile.find()
db.system.profile.find( { millis : { $gt : 10000 } } )
db.system.profile.find().limit(10).sort( { ts : -1 } ).pretty()
查看最新的 Profile 记录:
db.system.profile.find().sort({$natural:-1})
ts-该命令在何时执行.
millis Time-该命令执行耗时,以毫秒记.
info-本命令的详细信息.
query-表明这是一个query查询操作.
ntoreturn-本次查询客户端要求返回的记录数.比如, findOne()命令执行时 ntoreturn 为 1.有limit(n) 条件时ntoreturn为n.
query-具体的查询条件(如x>3).
nscanned-本次查询扫描的记录数.
reslen-返回结果集的大小.
nreturned-本次查询实际返回的结果集.
3. 关闭Profiling
# 关闭
drug:PRIMARY> db.setProfilingLevel(0)
{ "was" : 1, "slowms" : 200, "ok" : 1 }
4. 修改“慢查询日志表”的大小
#关闭Profiling
drug:PRIMARY> db.setProfilingLevel(0)
{ "was" : 0, "slowms" : 200, "ok" : 1 }
drug:PRIMARY>use local
#删除system.profile集合
drug:PRIMARY> db.system.profile.drop()
true
#创建一个新的system.profile集合
drug:PRIMARY> db.createCollection( "system.profile", { capped: true, size:4000000 } )
{ "ok" : 1 }
#重新开启Profiling
drug:PRIMARY> db.setProfilingLevel(1)
{ "was" : 0, "slowms" : 200, "ok" : 1 }
注意:要改变Secondary的system.profile的大小,你必须停止Secondary,运行它作为一个独立的,然后再执行上述步骤。完成后,重新启动加入副本集。
5, 分析慢查询
1. 如果发现 millis 值比较大,那么就需要作优化。
2. 如果docsExamined数很大,或者接近记录总数(文档数),那么可能没有用到索引查询,而是全表扫描。
3. 如果keysExamined数为0,也可能是没用索引。
4. 结合 planSummary 中的显示,上例中是 "COLLSCAN, COLLSCAN" 确认是全表扫描
5. 如果 keysExamined 值高于 nreturned 的值,说明数据库为了找到目标文档扫描了很多文档。这时可以考虑创建索引来提高效率。
6. 索引的键值选择可以根据 query 中的输出参考,上例中 filter:包含了 jzrq和jglxfldm 并且按照RsId排序,所以 我们的索引
索引可以这么建: db.f10_2_8_3_jgcc.ensureindex({jzrq:1,jglxfldm:1,RsId:1})
mongo 慢查询配置的更多相关文章
- 监控Mongo慢查询
监控Mongo慢查询 1. 使用mongostat监控MongoDB全局情况 mongostat是mongdb自带的状态检测工具,在命令行下使用.它会间隔固定时间获取MongoDB的当前运行状态,并输 ...
- Mongo简单查询总结
mongo 简单查询db.ansheng.findOne()//返回第一条匹配到的数据db.ansheng.findOne({"aaaaa":4})db.ansheng.find( ...
- mysql慢查询Slow Query Log和未使用索引(Not Using Indexes)查询配置和使用
mysql的“慢查询”指的是超过了允许的最大查询时间(long_query_time)的sql语句,而“未使用索引”查询顾名思义就是查询语句没有使用到索引的sql语句. 慢查询配置和使用 在msyql ...
- Mongo 应用查询
官网操作手册,基本就够用 https://docs.mongodb.com/manual/ 下面是个分组查询的例子,项目中用到然后查了个例子,自己理解了下,觉得很好很强大. https://blog. ...
- 阶段3 1.Mybatis_12.Mybatis注解开发_7 Mybatis注解开发一对多的查询配置
一对多的配置,一个用户对应多个账户 需要在Accout里面增加根据用户的uid查询的方法 在user里面指定子一对多的查询配置 换行显示 测试 把这里注销掉.测试延迟加载,代码注释掉后,延迟加载就没有 ...
- Windows下 MySQL慢查询配置修改
在剖析服务器性能的过程中,慢查询是一个很好的工具. 我们可以通过设置slow_query_log来开启慢查询日志,long_query_time属性来设置慢查询定义阈值,设置slow_query_lo ...
- HCP查询配置
1.配置命名空间Service里的Search功能为enable以及索引等相关配置 2.配置用户对该命名空间的查询为允许
- MySQL 慢查询配置
MYSQL慢查询 1. 慢查询有什么用? 它能记录下所有执行超过long_query_time时间的SQL语句, 帮你找到执行慢的SQL, 方便我们对这些SQL进行优化. 2. 如何开启慢查询? 首先 ...
- day43 mysql 基本管理,[破解密码以及用户权限设置]以及慢日志查询配置
配置文件:详细步骤, 1,找到mysql的安装包,然后打开后会看到一个my.ini命名的程序,把它拖拽到notepad++里面来打开,(应该是其他文本形式也可以打开,可以试一下),直接拖拽即可打开该文 ...
随机推荐
- 将Java项目打包成可以独立运行的Jar包
因为一直也没怎么用过Java的原因,所以以前本科上课的时候,在控制台下运行Java程序都是仅仅运行单个的没有第三方库依赖的情况下运行的 那种情况特别简单,只要输入Javac 文件名.java等到编译完 ...
- 那些年很脑残的bugs
1.老师给了前端界面,我们用java写后台. 我改了表单form的action属性,让它跳到自己写的servlet上面去.自己在servlet里面对数据库一顿操作猛如虎,然后让servlet跳回原来页 ...
- 双指针---有序数组的TWO SUM
双指针思想,主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务. 有序数组的 Two Sum Leetcode :167. Two Sum II - Input array is sort ...
- linux性能分析工具Swap
- ssh-keygen - 认证密钥的产生, 管理和转换
总览 (SYNOPSIS) ssh-keygen -words [-q ] [-b bits ] -t type [-N new_passphrase ] [-C comment ] [-f outp ...
- centos GIT安装
[注](yum 源仓库里的 Git 版本更新不及时,最新版本的 Git 是 1.8.3.1,但是官方最新版本已经到了 2.9.2.想要安装最新版本的的 Git,只能下载源码进行安装.) 安装git服务 ...
- (ACM模板)不定长数组vector
#include<iostream> #include<cstdio> #include<vector> #include<algorithm> usi ...
- qt如何去掉文件路径最后一个反斜杠的内容
QString strTemp = “E:\\hell\\word\\detect.txt” int nIndex = strTemp.lastIndexOf('\\'); strTemp ...
- Django学习笔记-修改Django的默认的数据库
1.修改设置settings中的配置 DATABASES = { 'default': { # 'ENGINE': 'django.db.backends.sqlite3', # 'NAME': os ...
- Mybatis-Generator demo
使用Mybatis-Generator自动生成Dao.Model.Mapping相关文件(转) https://www.cnblogs.com/smileberry/p/4145872.html == ...