位置: 编程技术 - 正文

Mongodb索引的优化(mongodb的索引种类)

编辑:rootadmin

推荐整理分享Mongodb索引的优化(mongodb的索引种类),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mongodb索引用什么数据结构,mongodb索引为什么是b树,mongodb建立索引的命令,mongodb索引用什么数据结构,mongodb索引用什么数据结构,mongo 索引,mongodb索引的功能,mongodb索引用什么数据结构,内容如对您有帮助,希望把文章链接给更多的朋友!

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB索引几乎和关系型数据库的索引一样.MongoDB的查询优化器能够使用这种数据结构来快速的对集合(collection)中的文档(collection)进行寻找和排序.准确来说,这些索引是通过B-Tree索引来实现的。在命令行中,可以通过调用ensureIndex()函数来建立索引,该函数指定一个到多个需要索引的字段,下面介绍mongodb索引如何优化

一、索引简介

例如如下数据

要按照username键进行查找,就可以在此键上建立索引,来提高查询速度.

要按照username,age键进行查找,就可以在此键上建立索引,来提高查询速度.

传递给ensureIndex的文档是一组值为1或-1的键,1为升序,-1为降序,表示索引的创建方向.若索引只有一个键,则方向无关紧要.

若是有多个键,就得考虑索引的方向问题了.

二、mongodb自带的就有监控,根据这些监控信息,可以做为优化的依据

1、explain执行计划

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

几个关键的字段说明

cursor:返回游标类型(BasicCursor或BtreeCursor)nscanned:被扫描的文档数量n:返回的文档数量millis:耗时(毫秒)indexBounds:所使用的索引

例如

SQL 代码

2、优化器profile

在MySQL中慢查询日志是经常作为我们优化数据库的依据那在MongoDB中是否有类似的功能呢&#;答案是肯定的那就是MongoDBDatabaseProfiler。所以MongoDB不仅有而且还有一些比MySQL的SlowQueryLog更详细的信息。mongodb把要输出的慢语句,存在于db.system.profile。与mysql的slowlog配置相似,需要进行参数设置,mongo才会输出慢语句到profile。有两个参数来控制profile的输出db.setProfilingLevel(level,slowms);

默认为0 不输出 1按第二个参数时间阀值(单位为毫秒)输出 2全部输出。通常我们在调优的时候都在测试环境打开参数。在生产环境下一般不输出profile。

比如

就可以输出,查询时间大于1秒的慢语句。

profile输出的各项值的含义是

ts:命令执行时间info:命令的内容query:代表查询order.order: 代表查询的库与集合reslen:返回的结果集大小,byte数nscanned:扫描记录数量nquery:后面是查询条件nreturned:返回记录数及用时millis:所花时间

Mongodb索引的优化(mongodb的索引种类)

如果发现时间比较长,那么就需要作优化。

比如

(1)、nscanned数很大,或者接近记录总数,那么可能没有用到索引查询。

(2)、reslen很大,有可能返回没必要的字段。

(3)、nreturned很大,那么有可能查询的时候没有加限制。

三、MongoDB的索引选择机制

MongoDB的优化程序会在对比中选择更优秀的索引。

首先,它会给查询做一个初步的“最佳索引”;

其次,假如这个最佳索引不存在它会做尝试来选出表现最好的索引;

最后,优化器还会记住所有类似查询的选择(只到大规模文件变动或者索引上的变动)。

那么优化器是如何定义查询的“最佳索引”。最佳索引必须包含查询中所有可以做过滤及需要排序的字段。此外任何用于范围扫描的字段以及排序字段都必须排在做等值查询的字段之后。如果存在不同的最佳索引,那么Mongo将随机选择。

四、MongoDB的索引总结

1. 等值测试

索引中加入所有需要做等值测试的字段,任意顺序。

2. 排序字段(多排序字段的升/降序问题 )

根据查询的顺序有序的向索引中添加字段。

3. 范围过滤

以字段的基数(Collection中字段的不同值的数量)从低到高的向索引中添加范围过滤字段。

4、如果索引中的等值或者范围查询字段不能过滤出Collection中%以上的文档,那么把它移除索引估计会更好一些。

5、索引使得可以通过关键字段获取数据,能够使得快速查询和更新数据。但是,必须注意的是,索引也会在插入和删除的时候增加一些系统的负担。往集合中插入数据的时候,索引的字段必须加入到B-Tree中去,因此,索引适合建立在读远多于写的数据集上,对于写入频繁的集合,在某些情况下,索引反而有副作用。不过大多数集合都是读频繁的集合,所以集合在大多数情况下是有用的。

6、如果数据集合比较小(通常小于4M),使用sort()而不需要建立索引就能够返回数据。在这种情况下,做好联合使用limit()和sort()。

关于Mongodb索引的优化就给大家介绍这么多,希望对大家有所帮助!

MongoDB性能篇之创建索引,组合索引,唯一索引,删除索引和explain执行计划 一、索引MongoDB提供了多样性的索引支持,索引信息被保存在system.indexes中,且默认总是为_id创建索引,它的索引使用基本和MySQL等关系型数据库一样。其

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的索引种类

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

上一篇:MongoDB查询性能优化验证及验证(mongodb性能测试)

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

  • 个人出租不动产税率
  • 小微企业税收优惠政策2023年
  • 印花税缴款怎么用银行卡支付
  • 公司的纳税信用等级对财务人员有什么影响
  • 税费四舍五入的怎么做帐
  • 税控盘和税控钥匙一样吗
  • 汽车销售服务费增值税税率
  • 委托加工环节原材料收消费税吗
  • 出纳在银行领了钱出纳要怎样记帐?
  • 经营杠杆系数分类
  • 高新技术企业一定是先进制造业吗
  • 月初缴纳的保险是当月的吗
  • 红字发票交税吗
  • 物流企业税务稽查要点
  • 房产税从租计征按月还是按季
  • Windows操作系统出现内存错误解决方法
  • 关于javascript
  • 应收账款收回怎么处理
  • 踩坑视频
  • PHP:imagecolorstotal()的用法_GD库图像处理函数
  • Yii2表单事件之Ajax提交实现方法
  • 资产负债表中的货币资金怎么算
  • uniapp中使用amap-vue,设置安全密钥
  • roc曲线绘制r语言
  • 基础kl
  • 跨境电商企业要进入某个国家的市场 必须先做的工作是
  • 汇算清缴补税的情况有哪些
  • 子公司收购母公司另一子公司会计处理
  • 研发费用属于什么会计科目
  • 织梦标签理解
  • 付员工经济补偿金的分录
  • 转出未交增值税最终怎么转平
  • 小规模印花税可以按次申报吗
  • 预算外财政支出
  • 混合销售行为的例子
  • 工程施工人工费,材料费,机械费占多少比例
  • 租赁期间因占有、使用租赁物获得的收益
  • 未确认递延所得税资产的可抵扣亏损到期年度表
  • 财务风险有什么类别
  • 收到材料发票怎么写摘要
  • 股权转让中土地要否缴纳增值税
  • 红冲凭证怎么做分录
  • 建筑安装业,指从事____的企业
  • 为什么生产成本不属于损益类科目
  • 固定资产账实不符违反的规定
  • 原材料暂估入库是什么意思
  • 行政单位往来款规定
  • 公司收到现金货款怎么存银行
  • 事业单位发放生育津贴从哪年执行的
  • 未按期预缴企业社保
  • 售房中心给客人怎么说
  • 返还利润含税吗
  • 小规模纳税人每个季度超过了30万怎么办
  • 结余资金结转申请怎么写
  • 现金支票取现的法律规定
  • 广州残保金如何计算
  • 服务企业会计建账流程
  • sql server怎么添加数据
  • 什么是格式良好的xml文档
  • mssql 优化
  • 收集整理的近义词
  • freebsd 配置ip
  • dockers容器
  • 怎样升级智慧中小学版本软件
  • vc++6.0运行程序
  • 怎么更改win7
  • ubuntu操作系统入门
  • linux jre
  • windows8中文版是什么版本
  • win10预览版和正式版区别
  • linux怎样使用
  • Python中使用Queue和Condition进行线程同步的方法
  • python中按下某个按键
  • a标签的href点击怎么不跳转
  • python+django
  • python:\n
  • js过滤特殊字符串
  • 国家税务局文件查询
  • 外经证注销网上操作
  • 金税三期怎么打完税凭证
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设