设为首页 加入收藏

TOP

MongoDB数据模型和索引学习总结(二)
2015-11-21 01:52:07 来源: 作者: 【 】 浏览:2
Tags:MongoDB 数据 模型 索引 学习 总结
At": 1 }, { expireAfterSeconds: 3600 } ) 索引结构和特性:

(1) B树结构,顺序存储:MongoDB的索引均采用B树的结构组织,支持高效的等值查询和范围查询。且内部索引项(entry)是默认有序的,可以天然保证返回结果有序。

(2) 索引的排序:构建索引是可以指定索引项是按照升序或降序构建,升序或降序的选择对于单值索引来说是等效的,但是对于组合索引则不等学效,组合索引被组织成上下级的树形结构,升序或降序选择错误,会对性能产生较大影响。

(3) 索引的交集:2.6版本以后,索引的查询优化策略支持索引的交集,可以将多条索引组合来使用,最高效的检索数据。例如可以构建两条单独的索引,当查询条件关联到这两条索引的时候,索引优化计划会自动组合这两条索引来检索。

例如构建了如下2条索引:

{ qty: 1 }
{ item: 1 }

则以下查询语句会命中以上两条索引:

db.orders.find( { item: "abc123", qty: { $gt: 15 } } )

另外索引的交集和包括:

索引的前缀交集:主要针对组合索引,查询计划会优化组合索引的前缀来查询。
索引分析方法:

(1) 评估RAM容量,尽量保证索引在内存中:

查询索引大小的命令(单位是字节):

db.collection.totalIndexSize() 
db.collection.stats()

(2) 分析查看索引的计划:

MongoDB中使用explain和hint可以查看索引的策略:

db.collection.find().explain()

可以看出那条索引策略生效,以及索引交集的使用情况。

db.collection.find().hint({"name":1})

hint的命令则可以指定强制使用某条索引。

(3) 索引的管理信息: 每个DB下面都会有一个system.indexes集合,这个集合记录着DB下,索引构建的元数据信息。

db.system.indexes.find()
注意点:
(1) 每个索引需要至少8K的空间。
(2) MongoDB 会对 _id字段自动创建唯一索引。
(3) 一个特别的索引类型支撑了TTL集合的实现,TTL依赖一个在Mongod中的后台线程,该线程读取索引中日期类型的值并从集合中删除过期的documents。
首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇HBase写请求分析 下一篇powerdesigner16.5视图的显示

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: