基于MongoDB数据库索引构建情况全面分析

  

  

本文将详细介绍MongoDB数据库索引构建情况分析

  

  

创建索引可以加快索引相关的查询,但是会增加磁盘空间的消耗,降低写入性能。这时,就需要评判当前索引的构建情况是否合理,有4种方法可以使用

  

<强> 1,mongostat工具

  

<强> 2,概要集合介绍

  

<强> 3日志

  

<强> 4,解释分析

  

  

mongostat是mongodb自带的状态检测工具,在命令行下使用。它会间隔固定时间获取mongodb的当前运行状态,并输出。如果发现数据库突然变慢或者有其他问题的话,首先就要考虑采用mongostat来查看蒙戈的状态

  

mongostat是查看mongodb运行状态的程序,使用方式如下

  

mongostat - h ip:端口

  

<强>【字段说明】

        插入/s:每秒插入数据库的对象数量,如果是奴隶,则数值前有*,则表示复制集操作   查询/s:每秒的查询操作次数   更新/s:每秒的更新操作次数   删除/s:每秒的删除操作次数   getmore/s:每秒查询光标(游标)时的getmore操作数   命令:每秒执行的命令数,在主从系统中会显示两个值(例如3 | 0),分别代表本地|复制命令   脏:脏数据字节的缓存百分比   使用:正在使用中的缓存百分比   冲:检查点的触发次数在一个轮询间隔期间,一般都是0,间断性会是1,通过计算两个1之间的间隔时间,可以大致了解多长时间冲洗一次.flush开销是很大的,如果频繁的冲洗,可能就要找找原因了   vsize:虚拟内存使用量,单位MB   res:物理内存使用量,单位MB. res会慢慢的上升,如果res经常突然下降,要查看下是否有别的程序狂吃内存   qr:客户端等待从MongoDB实例读数据的队列长度   qw:客户端等待从MongoDB实例写入数据的队列长度   基于“增大化现实”技术:执行读操作的活跃客户端数量   亚历山大-伍尔兹:执行写操作的活客户端数量。如果ar或aw数值很大,那么就是DB被堵住了,DB的处理速度不及请求速度。查看是否有开销很大的慢查询。如果查询一切正常,确实是负载很大,就需要加机器了   netIn: MongoDB实例的网络进流量   netOut: MongoDB实例的网络出流量   康涅狄格州:打开连接的总数,是qr, qw, ar, addison - wesley的总和   时间:当前时间      

<强>【实例】

  

插入100000条数据,并打开mongostat查询mongodb运行状态

  基于MongoDB数据库索引构建情况全面分析”>
  <p>由下图看的出,插入值插入值在插入数据时大量增加,在插入完毕后变成0.刷新两个1之间的间隔时间很长,说明性能还不错,res在慢慢上升,没有出现突然下降的情况,说明没有其他的程序大量占用内容的情况,qrw及arw数据很小,说明数据库读写状态正常,负载较小。总体而言,mongodb数据库运行状态良好</p>
  <img src=基于MongoDB数据库索引构建情况全面分析