前面的话
从事成都西云数据中心,服务器租用,云主机,雅安服务器托管,域名注册,CDN,网络代维等服务。本文将详细介绍MongoDB数据库索引构建情况分析
概述
创建索引可以加快索引相关的查询,但是会增加磁盘空间的消耗,降低写入性能。这时,就需要评判当前索引的构建情况是否合理。有4种方法可以使用
1、mongostat工具
2、profile集合介绍
3、日志
4、explain分析
mongostat
mongostat是mongodb自带的状态检测工具,在命令行下使用。它会间隔固定时间获取mongodb的当前运行状态,并输出。如果发现数据库突然变慢或者有其他问题的话,首先就要考虑采用mongostat来查看mongo的状态
mongostat是查看mongodb运行状态的程序,使用方式如下
mongostat -h ip:port
【字段说明】
insert/s : 每秒插入数据库的对象数量,如果是slave,则数值前有*,则表示复制集操作 query/s : 每秒的查询操作次数 update/s : 每秒的更新操作次数 delete/s : 每秒的删除操作次数 getmore/s: 每秒查询cursor(游标)时的getmore操作数 command: 每秒执行的命令数,在主从系统中会显示两个值(例如 3|0),分别代表 本地|复制 命令 dirty: 脏数据字节的缓存百分比 used:正在使用中的缓存百分比 flushes:checkpoint的触发次数在一个轮询间隔期间。一般都是0,间断性会是1, 通过计算两个1之间的间隔时间,可以大致了解多长时间flush一次。flush开销是很大的,如果频繁的flush,可能就要找找原因了 vsize: 虚拟内存使用量,单位MB res: 物理内存使用量,单位MB。 res会慢慢的上升,如果res经常突然下降,要查看下是否有别的程序狂吃内存 qr: 客户端等待从MongoDB实例读数据的队列长度 qw:客户端等待从MongoDB实例写入数据的队列长度 ar: 执行读操作的活跃客户端数量 aw: 执行写操作的活客户端数量。如果ar或aw数值很大,那么就是DB被堵住了,DB的处理速度不及请求速度。查看是否有开销很大的慢查询。如果查询一切正常,确实是负载很大,就需要加机器了 netIn:MongoDB实例的网络进流量 netOut:MongoDB实例的网络出流量 conn: 打开连接的总数,是qr,qw,ar,aw的总和 time:当前时间