二,mogodb索引
来源:互联网 发布:网页ui界面设计软件 编辑:程序博客网 时间:2024/05/16 03:52
1.explain()说明
explain()是MongoDB的一个重要的查询论断工具,这个函数能够提供大量的与查询相关的信息,该函数会返回查询计划、执行状态、服务器信息,根据这些信息可以有针对性的对性能进行优化。MongoDB 3.0之后,explain的返回与使用方法与之前版本有了不少变化,介于3.0之后的优秀特色,本文仅针对MongoDB 3.0+的explain进行讨论。
现版本explain有三种模式,分别如下:
queryPlanner
- executionStats
- allPlansExecution
- queryPlanner是现版本explain的默认模式,queryPlanner模式下并不会去真正进行query语句查询,而是针对query语句进行执行计划分析并选出winning plan。
explain()是MongoDB的一个重要的查询论断工具,这个函数能够提供大量的与查询相关的信息,该函数会返回查询计划、执行状态、服务器信息,根据这些信息可以有针对性的对性能进行优化。MongoDB 3.0之后,explain的返回与使用方法与之前版本有了不少变化,介于3.0之后的优秀特色,本文仅针对MongoDB 3.0+的explain进行讨论。
现版本explain有三种模式,分别如下:
queryPlanner
- executionStats
- allPlansExecution
- queryPlanner是现版本explain的默认模式,queryPlanner模式下并不会去真正进行query语句查询,而是针对query语句进行执行计划分析并选出winning plan。
db.kucun.find({"serialid":25}).explain(){ "queryPlanner" : { "plannerVersion" : 1, "namespace" : "irectoryperdb.kucun", "indexFilterSet" : false, "parsedQuery" : { "serialid" : { "$eq" : 25 } }, "winningPlan" : { "stage" : "COLLSCAN", "filter" : { "serialid" : { "$eq" : 25 } }, "direction" : "forward" }, "rejectedPlans" : [ ] }, "serverInfo" : { "host" : "app205", "port" : 27018, "version" : "3.2.9", "gitVersion" : "22ec9e93b40c85fc7cae7d56e7d6a02fd811088c" }, "ok" : 1}
explain.queryPlanner: queryPlanner的返回
explain.queryPlanner.namespace:该值返回的是该query所查询的表
explain.queryPlanner.indexFilterSet:针对该query是否有indexfilter
explain.queryPlanner.winningPlan:查询优化器针对该query所返回的最优执行计划的详细内容。
explain.queryPlanner.winningPlan.stage:最优执行计划的stage,这里返回是FETCH,可以理解为通过返回的index位置去检索具体的文档(stage有数个模式,将在后文中进行详解)。
Explain.queryPlanner.winningPlan.inputStage:用来描述子stage,并且为其父stage提供文档和索引关键字。
explain.queryPlanner.winningPlan.stage的child stage,此处是IXSCAN,表示进行的是index scanning。
explain.queryPlanner.winningPlan.keyPattern:所扫描的index内容,此处是did:1,status:1,modify_time: -1与scid : 1
explain.queryPlanner.winningPlan.indexName:winning plan所选用的index。
explain.queryPlanner.winningPlan.isMultiKey是否是Multikey,此处返回是false,如果索引建立在array上,此处将是true。
explain.queryPlanner.winningPlan.direction:此query的查询顺序,此处是forward,如果用了.sort({modify_time:-1})将显示backward。
explain.queryPlanner.winningPlan.indexBounds:winningplan所扫描的索引范围,如果没有制定范围就是[MaxKey, MinKey],这主要是直接定位到mongodb的chunck中去查找数据,加快数据读取。
explain.queryPlanner.rejectedPlans:其他执行计划(非最优而被查询优化器reject的)的详细返回,其中具体信息与winningPlan的返回中意义相同,故不在此赘述。
stage的类型的意义
mongodb的文档中列出了前4种类型,还有一些没有列出来,但是会比较常见,这里一并解释一下。
COLLSCAN :全表扫描
IXSCAN:索引扫描
FETCH::根据索引去检索指定document
SHARD_MERGE:各个分片返回数据进行merge
SORT:表明在内存中进行了排序(与前期版本的scanAndOrder:true一致)
SORT_MERGE:表明在内存中进行了排序后再合并
LIMIT:使用limit限制返回数
SKIP:使用skip进行跳过
IDHACK:针对_id进行查询
SHARDING_FILTER:通过mongos对分片数据进行查询
COUNT:利用db.coll.count()之类进行count运算
COUNTSCAN:count不使用用Index进行count时的stage返回
COUNT_SCAN:count使用了Index进行count时的stage返回
SUBPLA:未使用到索引的$or查询的stage返回
TEXT:使用全文索引进行查询时候的stage返回
2.查看索引
db.index_test.getIndexes()
3.建立索引
从3.0版本后使用 db.collection.createIndex()代替db.collection.ensureIndex()
语法:db.collection.createIndex(keys, options)
参数说明:
1. keys: {字段名1:ascending,… 字段名n:ascending}: ascending 设为1 标识索引升序,-1降序
2. options : 设置索引选项,如设置名称、设置成为唯一索引
- 二,mogodb索引
- mogodb
- mogodb
- mogodb
- mogodb
- mogodb
- mogodb特点一:支持地理位置索引
- mogodb 介绍(二)----基本使用
- mogodb操作
- mogodb(3)
- mogodb(2)
- MogoDB在线教程
- mogodb用法
- mogodb java
- 10.MogoDB综合陈诉。
- MogoDB常用函数
- mogodb capped collection
- mogodb高级查询选项
- pod 一些解释
- github生成个公钥
- 在UINavigationController中使用UITabBarController,处理Two-stage Rotation错误
- BeagleBone Black Linux驱动程序开发入门(1): LED驱动程序
- oracle数据库知识
- 二,mogodb索引
- Sql server2012中触发器发送http请求
- JQuery实战---窗口效果
- 再谈 共轭方向法/Conjugate Direction Method In Optimization
- APi 网络学习之一SNMP(简单网络管理协议)
- SSL协议详解
- 检测网页是否通过W3C标准的校验
- 找到netstat的程序的名称
- Android系统性能调优工具介绍