默认情况下,MongoDB 在文档中的 _id 键上创建索引。但是当我确保额外的索引(像 MySQL 中的 InnoDB 中的辅助索引?)并在之后查询它时,引擎会扫描它然后选择性地扫描 _id 索引以获取文档偏移量?
我很困惑,因为当分片出现时,我是对的,每个 block 都有自己的索引,每个查询会有很多随机读取?
最佳答案
每个分片都有自己的索引(仅包含该分片中的文档),它们将被并行访问(每个分片读取其自己的本地索引分片)并将结果合并。这不是随机读取,而是多个并行索引读取。从单个分片的角度来看,这看起来就像一个普通的索引访问。
这种索引分片也是二级索引在分片环境中不能唯一的原因(没有单一的全局索引可以确保唯一性)。
关于mongodb - MongoDB 如何管理二级索引扫描?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3824274/