位置: 编程技术 - 正文

基于MongoDB数据库索引构建情况全面分析(mongodb使用案例)

编辑:rootadmin

推荐整理分享基于MongoDB数据库索引构建情况全面分析(mongodb使用案例),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mongodb数据库基本操作,mongodb 设计数据模型,基于mongodb的数据分析,基于mongodb的数据分析,mongodb使用案例,mongodb 设计数据模型,mongodb数据处理,基于mongodb的数据分析,内容如对您有帮助,希望把文章链接给更多的朋友!

前面的话

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

概述

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

1、mongostat工具

2、profile集合介绍

3、日志

4、explain分析

mongostat

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

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

mongostat -h ip:port

【字段说明】

【实例】

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

由下图看出,插入值insert值在插入数据时大量增加,在插入完毕后变成0。flush两个1之间的间隔时间很长,说明性能还不错;res在慢慢上升,没有出现突然下降的情况,说明没有其他的程序大量占用内容的情况;qrw及arw数据很小,说明数据库读写状态正常,负载较小。总体而言,mongodb数据库运行状态良好

profile

mongodb可以通过profile来监控数据,进行优化

【级别】

首先,要查看当前是否开启profile功能

使用下面的命令会返回level等级,值为0|1|2,0代表关闭,即不记录任何操作;1代表记录慢命令(默认值为ms),即记录运行时间超过ms的操作;2代表全部,即记录任何操作

使用下面的命令可以设置level等级

如下图所示,默认地,profile关闭。使用setProfilingLevel()方法以ms慢命令的方式开启profile

【状态】

操作被记录到system.profile集合中

通过db.system.profile.find() 查看当前的监控日志

【使用】

在系统中开启profile之后,如果profile记录的数据非常大,会比较明显的降低系统的性能。因此,profile的使用场景一般是新系统上线之前的测试阶段,以及刚上线时的观察阶段,查看数据库的设计及应用程序的使用是否正常。如果profile记录了大量的字段,需要调整系统附在、调整索引等,减小它的大小

日志

在配置日志文件时,可以使用verbose参数来配置日志详细程度,参数值从'v'到'vvvvv','v'越多,详细度越高

日志会记录mongodb的运行状态,包括连接时间、当前正在进行的操作等

explain

MongoDB 提供了一个 explain 命令让我们获知系统如何处理查询请求。利用 explain 命令,可以很好地观察系统如何使用索引来加快检索,同时可以针对性优化索引

explain有三种模式,分别是:queryPlanner、executionStats、allPlansExecution。现实开发中,常用的是executionStats模式

首先,插入万条数据

在time字段上建立索引

接着,寻找time范围在和之间的文档,并使用explain()

基于MongoDB数据库索引构建情况全面分析(mongodb使用案例)

结果分为queryPlanner、executionStats和serverInfo三个部分。接下来,将分别对这三个部分的结果进行详细分析

【queryPlanner】

queryPlanner.plannerVersion: 版本

queryPlanner.namespace: 查询的表

queryPlanner.indexFilterSet: 针对该query是否有indexfilter

queryPlanner.parsedQuery: 查询条件

queryPlanner.winningPlan: 查询优化器针对该query所返回的最优执行计划的详细内容

queryPlanner.winningPlan.stage: 最优执行计划的stage

queryPlanner.winningPlan.inputStage: 用来描述子stage,并且为其父stage提供文档和索引关键字。

queryPlanner.winningPlan.inputstage.stage,此处是IXSCAN,表示进行的是index scanning

queryPlanner.winningPlan.inputstage.keyPattern: 索引键值对

queryPlanner.winningPlan.inputstage.indexName:索引名称

queryPlanner.winningPlan.inputstage.isMultiKey: 是否是Multikey,此处返回是false,如果索引建立在array上,此处将是true

queryPlanner.winningPlan.inputstage.direction:查询顺序,此处是forward,如果用了.sort({time:-1})将显示backward

queryPlanner.winningPlan.inputstage.indexBounds: 所扫描的索引范围

queryPlanner.rejectedPlans:其他执行计划

【executionStats】

executionStats.executionSuccess: 是否成功

executionStats.nReturned: 查询返回条目个数

executionStats.totalKeysExamined: 索引扫描条目个数

executionStats.totalDocsExamined: 文档扫描条目个数

executionStats.executionStages.stage: 扫描类型

executionStats.executionTimeMillis: 整体查询时间

executionStats.executionStages.executionTimeMillisEstimate: 根据索引检索文档获得数据的时间

executionStats.executionStages.inputStage.executionTimeMillisEstimate: 扫描索引所用时间

【serverInfo】

serverInfo.host: 主机名

serverInfo.port: 端口

serverInfo.version: 版本

serverInfo.gitVersion: git版本

【性能分析】

1、执行时间

executionTimeMillis值越小越好

2、条目数量

最理想的状态是: nReturned=totalKeysExamined=totalDocsExamined

3、stage类型

stage的类型列举如下:

不希望看到包含如下的stage:

以上这篇基于MongoDB数据库索引构建情况全面分析就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持积木网。

Mongodb实现的关联表查询功能【population方法】 本文实例讲述了Mongodb实现的关联表查询功能。分享给大家供大家参考,具体如下:PopulationMongoDB是非关联数据库。但是有时候我们还是想引用其它的文

解决MongoDB 排序超过内存限制的问题 对集合执行一个大排序操作(如聚合),出现以下错误:(测试版本:MongoDB3.0.6)db.bigdata.aggregate({$group:{_id:"$range",total:{$sum:1}}},{$sort:{total:-1}});#...aggregat

在Linux服务器中配置mongodb环境的步骤 1、到mongodb官网下载一个合适的linux环境安装包如下图,放到本地的某个角落,要记得位置哦~2、然后你需要有一个服务器,并进入sshroot@你的IP//回车输

标签: mongodb使用案例

本文链接地址:https://www.jiuchutong.com/biancheng/312658.html 转载请保留说明!

上一篇:MongoDB安全及身份认证(实例讲解)(mongodb认证)

下一篇:Mongodb实现的关联表查询功能【population方法】(mongodb介绍)

  • 所得税汇算清缴招待费扣除标准
  • 哪些企业需要缴纳企业所得税?
  • 出口退税的账怎么做
  • 完工产品成本计入什么科目
  • 应付账款转营业外收入进项税转出
  • 财务往来账对账制度
  • 水利基金申报表减除项填什么
  • 装修收入如何填报增值税表
  • 汇算清缴结束后,税务机关发现企业应当取得
  • 购进库存商品到销售全部分录
  • 亏损企业要做业务处理吗
  • 土地增值税预缴最新税法规定
  • 超范围经营如何举报
  • 公益性生物资产属于什么科目
  • 只有税控盘没有报税盘
  • 固定资产的知识
  • 企业所得税收入大于增值税收入的原因
  • 超市开发票要交百分之几的税?
  • 增值税进项发票网上勾选平台
  • 半变动成本和延期成本的区别
  • 住房公积金证书更新
  • 什么企业需要纳税申报
  • boss直聘收费怎么这么贵
  • 投资公司抛售原始股如何交税?
  • 销售价格调整
  • 无法卸载系统更新 backup
  • 小规模没有发票可以入账吗
  • 新版edge浏览器兼容性视图怎么设置
  • 报税残疾人保障金怎么算
  • win10永久激活码神key一周内
  • 微信企业公众号开发平台
  • 常见的四种POST 提交数据方式(小总结)
  • 充值会员卡送的营销秘诀
  • 期货公司保证金怎么算的
  • 房屋产权置换协议书范本
  • broken pipe write failed
  • php imap函数
  • 奥卡拉国家森林公园
  • 固定资产清理的累计折旧怎么算
  • 驾校属于什么行业分类类别
  • 预训练的目的
  • 中科院t1
  • ChatGPT的了解与初体验
  • 下载下来是php
  • ci框架过时了吗
  • 免费下载含羞草视频影视站苹果CMSv10高级主题模版破解无授权-OK源码破解
  • vue遇到的问题和解决方法
  • wordpress删除修订版本
  • java mongodb模糊查询
  • 收到生育津贴如何入账
  • 平价转让股权怎么做账
  • 投资收益收到的现金增加的原因
  • 公司向个人支付居间费用
  • 发票遗失有什么影响
  • 视同销售是按成本价入账还是按计税价格入账,为什么?
  • 员工在工伤
  • 银行支付结算管理办法
  • 周转材料计入现金流量表
  • 汽修厂印花税怎么交
  • 企业法人个人贷款企业承担吧?
  • 出口退税免抵退税额要交城建税吗
  • 景区如何管理和服务
  • 资产减值损失和资产处置损益区别
  • 未使用的固定资产计提折旧应当计入
  • 第二个季度
  • 车船税开在备注栏相关文件
  • 如何开具发票?
  • mysql 5.7.17 winx64安装配置教程
  • 苹果Mac系统怎么装
  • windows xp的控制面板
  • win10怎么旋转屏幕
  • WIN10安装介质不识别硬盘
  • linux如何直接访问gpio不用设备树
  • node.js加密
  • web开发手机app
  • unity教程完整版
  • 从最近两会看苹果和谷歌的最大梦魇
  • 深圳大学各专业组代码
  • 重庆外经证网上报验流程及时间
  • 享受税收优惠影响就业吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设