位置: 编程技术 - 正文

MongoDB性能篇之创建索引,组合索引,唯一索引,删除索引和explain执行计划(mongodb aggregate 性能)

编辑:rootadmin

推荐整理分享MongoDB性能篇之创建索引,组合索引,唯一索引,删除索引和explain执行计划(mongodb aggregate 性能),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mongodb bi,mongodb aggregate 性能,mongodb效率高不,mongodb aggregate 性能,mongodb效率高不,mongodb性能瓶颈,mongodb效率高不,mongodb 性能,内容如对您有帮助,希望把文章链接给更多的朋友!

一、索引

MongoDB 提供了多样性的索引支持,索引信息被保存在system.indexes 中,且默认总是为_id创建索引,它的索引使用基本和MySQL 等关系型数据库一样。其实可以这样说说,索引是凌驾于数据存储系统之上的另一层系统,所以各种结构迥异的存储都有相同或相似的索引实现及使用接口并不足为 奇。

1.基础索引

在字段age 上创建索引,1(升序);-1(降序):

_id 是创建表的时候自动创建的索引,此索引是不能够删除的。当系统已有大量数据时,创建索引就是个非常耗时的活,我们可以在后台执行,只需指定“backgroud:true”即可。

2.文档索引

索引可以任何类型的字段,甚至文档:

3. 组合索引

跟其它数据库产品一样,MongoDB 也是有组合索引的,下面我们将在addr.city 和addr.state上建立组合索引。当创建组合索引时,字段后面的1 表示升序,-1 表示降序,是用1 还是用-1 主要是跟排序的时候或指定范围内查询 的时候有关的。

4. 唯一索引

只需在ensureIndex 命令中指定”unique:true”即可创建唯一索引。例如,往表t4 中插入2 条记录:

5.强制使用索引

hint 命令可以强制使用某个索引。

6.删除索引

二、explain执行计划

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

字段说明:

cursor: 返回游标类型(BasicCursor 或 BtreeCursor)

nscanned: 被扫描的文档数量

n: 返回的文档数量

millis: 耗时(毫秒)

indexBounds: 所使用的索引

三、优化器profile

在MySQL 中,慢查询日志是经常作为我们优化数据库的依据,那在MongoDB 中是否有类似的功能呢&#;答案是肯定的,那就是MongoDB Database Profiler。

1.开启profiling功能

有两种方式可以控制 Profiling 的开关和级别,第一种是直接在启动参数里直接进行设置。启动MongoDB 时加上?profile=级别 即可。也可以在客户端调用db.setProfilingLevel(级别) 命令来实时配置,Profiler 信息保存在system.profile 中。我们可以通过db.getProfilingLevel()命令来获取当前的Profile 级别,类似如下操作:

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

0 ? 不开启

1 ? 记录慢命令 (默认为>ms)

2 ? 记录所有命令

Profile 记录在级别1 时会记录慢命令,那么这个慢的定义是什么&#;上面我们说到其默认为ms,当然有默认就有设置,其设置方法和级别一样有两种,一种是通过添加 ?slowms 启动参数配置。第二种是调用db.setProfilingLevel 时加上第二个参数:

MongoDB性能篇之创建索引,组合索引,唯一索引,删除索引和explain执行计划(mongodb aggregate 性能)

2.查询 Profiling 记录

与MySQL 的慢查询日志不同,MongoDB Profile 记录是直接存在系统db 里的,记录位置system.profile ,所以,我们只要查询这个Collection 的记录就可以获取到我们的 Profile 记录了。列出执行时间长于某一限度(5ms)的 Profile 记录:

MongoDB Shell 还提供了一个比较简洁的命令show profile,可列出最近5 条执行时间超过1ms 的 Profile 记录。

四、常用性能优化方案

创建索引

限定返回结果数

只查询使用到的字段

采用capped collection

采用Server Side Code Execution

使用Hint,强制使用索引

采用Profiling

五、性能监控工具

1. mongosniff

此工具可以从底层监控到底有哪些命令发送给了MongoDB 去执行,从中就可以进行分析:以root 身份执行:

然后其会监控位到本地以localhost 监听默认 端口的MongoDB 的所有包请求。

2.Mongostat

此工具可以快速的查看某组运行中的MongoDB 实例的统计信息 字段说明:

insert: 每秒插入量

query: 每秒查询量

update: 每秒更新量

delete: 每秒删除量

locked: 锁定量

qr | qw: 客户端查询排队长度(读|写)

ar | aw: 活跃客户端量(读|写)

conn: 连接数

time: 当前时间

它每秒钟刷新一次状态值,提供良好的可读性,通过这些参数可以观察到一个整体的性能情况。

3. db.serverStatus

这个命令是最常用也是最基础的查看实例运行状态的命令之一。

4.db.stats

db.stats 查看数据库状态信息。

以上所述是小编给大家介绍的MongoDB性能篇之创建索引,组合索引,唯一索引,删除索引和explain执行计划的相关知识,希望对大家有所帮助!

MongoDB中的主从同步配置和mongod相关启动命令讲解 MongoDB主从同步设置关于MongoDB的安装及启动参数说明可以参考我之前转载的《Ubuntu安装MongoDB》与《Mongodb启动命令mongod参数说明》主从设置Master:..

JavaScript按日期查询MongoDB中的数据的要点示例 groupbydate聚合查询日期统计每天数据(信息量)1{"_id":ObjectId("ac1eccd9d"),"msgType":"text","sendTime":ISODate("--T::.Z")}2{"_id":ObjectId("ac1ee

MongoDB单表数据的导出和恢复实例讲解 MongoDB是一个跨平台的,面向文档的数据库,提供高性能,高可用性和可扩展性方便。MongoDB工作在收集和文件的概念。数据库数据库是一个物理容器集合

标签: mongodb aggregate 性能

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

上一篇:Mongodb索引的优化(mongodb的索引种类)

下一篇:MongoDB中的主从同步配置和mongod相关启动命令讲解(mongodb中主键的默认格式是哪个?)

  • 个人给单位做事怎么开发票
  • 个体工商户怎样纳税
  • 自来水税率是9%还是3%
  • 小规模纳税人可以开1%的专票吗
  • 接受劳务是进项还是销项
  • 团建费用会计怎么写记账凭证
  • 公转私可以实时到账吗
  • 新征用的耕地是什么意思
  • 员工个人无息借款违法吗
  • 劳务派遣个人所得税
  • 承兑汇票的贴现费用怎么计算
  • 房租收入如何缴税?
  • 流动比率计算公式速动比率
  • 工程暂估价超了怎么办
  • 其他应收款直接计入营业外收入
  • 长期债券是指偿还期限超过几个月的债券
  • 购进货物用于免征增值税项目
  • 企业债务重组的案例
  • 多扣社保个人部分怎么做分录
  • 运输费发票备注栏填不下
  • 6位数开票代码
  • 服务型企业管理体系
  • 王者荣耀中如何隐藏贵族标志
  • 如何在Excel中合并计算
  • 认缴出资日期是2050什么意思
  • 小规模纳税人可以开增值税专用发票吗
  • 高新技术企业研发
  • 预计负债属于什么
  • 职工教育经费超过扣除限额的时候调增还是调减
  • 非营利组织企业所得税免税收入
  • php strlen 中文
  • 应收款项减值的核算方法
  • 应税行为包括销售货物吗
  • 拉尔韦橡
  • 建筑劳务公司何去何从
  • 以前年度损益调整会计分录
  • 利润表利息费用怎么填
  • 基于Java+SpringBoot+vue+elementui药品商城采购系统详细设计实现
  • php如何安装配置
  • 制造费用转入什么
  • 一般纳税人第一次申请发票
  • 微信小程序分包中插件样式丢失
  • sqlserver2012安装好了桌面没有图标
  • 开票方未缴税,为何要追回付款方的退税款
  • 建筑企业收挂靠公司的管理费如何做账?
  • 建筑业外包工程包括哪些
  • 固定资产的维修计入什么科目
  • 超市代销如何分成
  • 印花税计提依据业务发生时间还是开票时间?
  • 处置固定资产和报废固定资产区别
  • 微信怎么帮别人代缴社保
  • 管理费用怎么结转到本年利润未分配利润里了
  • 什么是资产减值准备计提
  • 工业企业自制半导体材料
  • 请问购买
  • mysql闪退处理
  • mysql数据库主机一般填什么
  • centos禁止用户登录
  • 安装win7系统需要注意什么
  • os x yosemite dp6下载 os x 10.10 dp6官方下载地址
  • centos7.4升级7.5
  • window8所有程序在哪
  • 苹果发布会亮点速览
  • win7耳机和外放一起响
  • javascript编程规范
  • 复制链接
  • cmd打开telnet
  • 服务器总是自动关机
  • python中的类怎么理解
  • unity脚本编写教程
  • angularjs简介
  • 用js实现类的方法
  • android+
  • js倒计时秒杀
  • js闭包的定义和用途
  • 12366纳税服务热线坐席人员
  • 消费税征税环节
  • 智利有什么自然景观
  • 棚户区改造的房子和商品房有什么区别
  • 什么是"五证合一"登记制度?办理"五证合一"程序和方案
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设