【问题标题】:Mongodb - Does projection increase the execution time?Mongodb - 投影会增加执行时间吗?
【发布时间】:2019-04-12 08:41:34
【问题描述】:

假设我的文档中有 50 个字段。

当我使用投影,并且只选择 4 个字段时,我的执行时间是增加还是减少?

mongodb是怎么处理的?

  1. mongodb 是否获取文档,然后过滤字段并返回?
  2. mongodb 是否获取选定的字段而不是整个文档并返回?
  3. findaggregate 的工作方式是否不同?

我相信第一个选项会增加执行时间,而第二个选项会减少它。

【问题讨论】:

    标签: mongodb aggregation-framework


    【解决方案1】:

    这一切都取决于我猜...取决于您的搜索条件。在我看来,它只能是第 1 点(或者应该对其进行大量优化),因为任何过滤或聚合或任何东西都可以在不在投影中的字段上。顺便说一句....定义“获取”。获取到客户端,我会说不,在服务器上“获取”是的。一般来说,我会说,如果您的查询不是那么复杂,即使投影需要一些额外的时间,它也会与将数据传输到客户端的总时间相平衡。总而言之,我们在这里谈论的是毫秒,总传输时间和延迟比优化数据库查询更难抑制。

    此外,我还发现了以下内容(比我认为的更技术性):https://dba.stackexchange.com/questions/198444/how-mongodb-projection-affects-performance

    【讨论】:

    • 这个例子只是一个文档。但是,当它有 1000 多个文档,并且您正在使用 lambda 函数,并且您收到大量调用时,这些毫秒很重要。
    • Fetch 指的是 mongodb 的 Fetch 阶段,它将检索文档并加载到内存中。
    • 是的有效点数/同意,但与所有内容一样,您可以构建正确的设置,但您也可以构建相同的设置很差(错误/没有索引,公共 Internet 上没有密码:),。很难说(任何事情都可能做错)。如前所述,我认为所附链接提供了一种更具技术性的方法,说明您如何从投影中受益,以及在哪些情况下
    猜你喜欢
    • 2021-09-25
    • 2013-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-02
    • 1970-01-01
    相关资源
    最近更新 更多