【问题标题】:How MongoDB manage secondary indexes scans?MongoDB如何管理二级索引扫描?
【发布时间】:2010-09-29 17:30:07
【问题描述】:

默认情况下,MongoDB 在文档中的 _id 键上创建索引。但是,当我确保附加索引(例如在 MySQL 中的 InnoDB 中的辅助索引?)并在之后查询它时,引擎会对其进行扫描,然后选择性扫描 _id 索引以获取文档偏移量?

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

【问题讨论】:

    标签: mongodb indexing clustered-index


    【解决方案1】:

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

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

    【讨论】:

    • shard 由 chunks 组成,这意味着每个 chunk 也会有自己的索引,并且并行 shard index 读取使用并行块索引?
    • @inquisitor:不确定。将同一分片上所有块的索引集成到一个索引中似乎更有意义。但是你应该在 MongoDB 邮件列表中询问(然后在这里报告)。
    • 如你所说,同一个分片上的所有块共享相同的索引结构(由邮件列表确认)。
    猜你喜欢
    • 1970-01-01
    • 2011-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-26
    • 1970-01-01
    • 2012-01-31
    • 2021-08-12
    相关资源
    最近更新 更多