存储引擎

network-Query Pan-Storage KV Interface-WiredTiger

核心数据结构B-Tree

M14-MongoDB索引原理及使用

MongoDB数据结构组织

M14-MongoDB索引原理及使用

索引原理总结

M14-MongoDB索引原理及使用

MongoDB索引类型

M14-MongoDB索引原理及使用

单列索引

M14-MongoDB索引原理及使用

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

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

联合索引

M14-MongoDB索引原理及使用
联合索引:{userid:1,score:-1} index userid升序,score降序
M14-MongoDB索引原理及使用

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

M14-MongoDB索引原理及使用

执行计划原理

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

查询计划-走索引

M14-MongoDB索引原理及使用

查询计划-不走索引

M14-MongoDB索引原理及使用

查询计划

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

获得查询计划

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

winningPlan

M14-MongoDB索引原理及使用

STAGE种类

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

executionStats

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

技巧

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

相关文章: