如何解决聚合并发性的 AWS DocumentDB 性能问题
我正在 AWS 中使用 DocumentDB,当我尝试从不同的聚合查询同时读取同一个集合时遇到了问题。
问题不是我无法从数据库中读取,而是完成查询需要花费大量时间。我是同时触发查询还是一个接一个触发查询都没有关系。
我正在使用带有 NodeJS 的 Lambda 函数来运行我的代码。我正在使用 mongoose 来处理与数据库的连接。
这是我放在一起来说明我的问题的示例代码:
query1() {
return Collection.aggregate([...])
}
query2() {
return Collection.aggregate([...])
}
query3() {
return Collection.aggregate([...])
}
如果我使用 Promise.all
运行它需要 相同的时间Promise.all([ query1(),query2(),query3() ])
如果我运行它等待上一个完成
query1().then(result1 => query2().then(result3 => query3()))
虽然如果我在不同的 Lambda 执行中运行每个查询,完成每个单独查询所需的时间会显着减少(1 到 2 秒之间)。
因此,如果它们并行运行,则执行应该在花费最多时间(2 秒)的查询时间结束,而不是像现在这样花费 7 秒。
所以我的猜测是无论我如何发送查询,DocumentDB 的实例都会按顺序运行查询。该集合中约有 19,000 个文档,总大小接近 25Mb。
当我查看实例的指标时,CPUUtilization 仅略高于 8% 并且 RAM 可用仅下降 20Mb。所以我不认为延迟的问题与实例的大小有关。
你知道为什么 DocumentDB 会这样吗?是否可以更改配置以并行运行聚合?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。