存储引擎
network-Query Pan-Storage KV Interface-WiredTiger
核心数据结构B-Tree

MongoDB数据结构组织

索引原理总结

MongoDB索引类型

单列索引

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

Projection中不要的字段要屏蔽掉
score:1 返回score
_id:0 不返回 _id
联合索引

联合索引:{userid:1,score:-1} index userid升序,score降序

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

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

查询计划-不走索引

查询计划
多条查询计划并行发起,优先返回100条或者先完成的计划完胜
但是并非100%精准,存在误判的可能性

获得查询计划
db.exam.find({userid:“abc”,school:“aa”}).explain(true)
winningPlan

STAGE种类

COLLSCAN 全表扫描,和SORT格外关注,可能使查询效率变低
IXSCAN 走索引
executionStats

当几个值相差很大,说明查询并不是最优的,做很多无效的浪费的,需要关注
技巧
索引不是越多越好,删除无效索引
永远记得后台建索引(background:true)
可以使用hint,但不建议使用Index filters
DB响应慢:慢查询-看监控-抓现场-分析业务-确定是否建索引
看文档,勤动手
2万+

被折叠的 条评论
为什么被折叠?



