M14-MongoDB索引原理及使用

存储引擎

network-Query Pan-Storage KV Interface-WiredTiger

核心数据结构B-Tree

M14-MongoDB索引原理及使用_第1张图片

MongoDB数据结构组织

M14-MongoDB索引原理及使用_第2张图片

索引原理总结

M14-MongoDB索引原理及使用_第3张图片

MongoDB索引类型

M14-MongoDB索引原理及使用_第4张图片

单列索引

M14-MongoDB索引原理及使用_第5张图片

Covered 查找的数据刚好是索引数值不需要其他字段

M14-MongoDB索引原理及使用_第6张图片
Projection中不要的字段要屏蔽掉
score:1 返回score
_id:0 不返回 _id

联合索引

M14-MongoDB索引原理及使用_第7张图片
联合索引:{userid:1,score:-1} index userid升序,score降序
M14-MongoDB索引原理及使用_第8张图片

索引属性—唯一索引与TTL索引

M14-MongoDB索引原理及使用_第9张图片

执行计划原理

执行计划和索引息息相关。
如果没有索引,就不需要执行计划,全表扫描就可以了。

查询计划-走索引

M14-MongoDB索引原理及使用_第10张图片

查询计划-不走索引

M14-MongoDB索引原理及使用_第11张图片

查询计划

多条查询计划并行发起,优先返回100条或者先完成的计划完胜
但是并非100%精准,存在误判的可能性
M14-MongoDB索引原理及使用_第12张图片

获得查询计划

db.exam.find({userid:“abc”,school:“aa”}).explain(true)

winningPlan

M14-MongoDB索引原理及使用_第13张图片

STAGE种类

M14-MongoDB索引原理及使用_第14张图片
COLLSCAN 全表扫描,和SORT格外关注,可能使查询效率变低
IXSCAN 走索引

executionStats

M14-MongoDB索引原理及使用_第15张图片
当几个值相差很大,说明查询并不是最优的,做很多无效的浪费的,需要关注

技巧

索引不是越多越好,删除无效索引
永远记得后台建索引(background:true)
可以使用hint,但不建议使用Index filters
DB响应慢:慢查询-看监控-抓现场-分析业务-确定是否建索引
看文档,勤动手

你可能感兴趣的:(MongoDB)