3

默认情况下,MongoDB 在文档中的 _id 键上创建索引。但是当我确保额外的索引(在 MySQL 中的 InnoDB 中是二级索引?)并在之后查询它时,引擎会扫描它,然后选择性扫描 _id 索引以获取文档偏移量?

我很困惑,因为当分片出现时,我是对的,每个块都有自己的索引,每个查询会有很多随机读取?

4

1 回答 1

8

每个分片都有自己的索引(仅包含该分片中的文档),它们将被并行访问(每个分片读取自己的本地索引分片)并将结果合并。这不是随机读取,而是多个并行索引读取。从单个分片的角度来看,这看起来就像一个普通的索引访问。

这种索引分片也是分片环境中二级索引不能唯一的原因(没有单一的全局索引可以保证唯一性)。

于 2010-09-29T23:39:30.253 回答