默认情况下,MongoDB在文档中的_id键上创建索引。但是当我确保额外的索引(像来自MySQL的InnoDB中的辅助索引?)并查询之后,引擎会扫描它然后选择性扫描_id索引来获取文档偏移量吗?
我很困惑,因为当分片出现时,我认为每个块都有自己的索引,每个查询会有很多随机读取?
答案 0 :(得分:8)
每个分片都有自己的索引(仅包含此分片中的文档),它们将被并行访问(每个分片读取自己的本地索引分片)并合并结果。这不是随机读取,而是多个并行索引读取。从单个分片的角度来看,这看起来就像普通的索引访问。
此索引分片也是二级索引在分片环境中不可能唯一的原因(没有单个全局索引可以确保唯一性)。