【问题标题】:Firebase functions query is too slowFirebase 函数查询太慢
【发布时间】:2022-01-03 17:47:33
【问题描述】:

我目前正在使用带有 firebase-functions v. 3.16.0 的 Node,并且我的一个函数存在巨大的性能问题(冷启动大约需要 35-40 秒,后续查询大约需要 25-30 秒)。本质上,我正在尝试使用大约 50000 条记录访问 firestore 数据库并获取其中的几个,其中 userId = userId 提供。 firebase 控制台上的相同查询在 30 毫秒后给了我结果。我尝试了多种解决方案,但其中大多数更多是关于冷启动时间,尽管即使没有冷启动我的功能也很慢。有一大段代码会导致巨大的延迟:

  const checkInsRef = db.collection(CHECKINS_COLLECTION);
  const checkInsSnapshot = await checkInsRef.where(USER_ID, '==', userId).get();

【问题讨论】:

  • 很抱歉打扰您,但我们能否获得有关集合结构及其文档结构的一些上下文,以及您在 JS 中调用查询的一些上下文?这可能看起来有点傻,但了解上下文确实有助于了解问题可能出在哪里,否则就像在黑暗中扔飞镖一样。

标签: javascript node.js firebase google-cloud-firestore google-cloud-functions


【解决方案1】:

我自己解决了这个问题。因此,基本上,即使用户对象的集合并没有那么大(2MB),每个用户都有一个带有许多嵌套对象(有时像 7 个嵌套级别)的讨厌对象,在没有这个“付款”字段的情况下使集合重复,并且查询它平均给了我 4s

【讨论】:

  • 嵌套对象而不是嵌套文档?因为如果嵌套文档不应该是一个问题,除非你有每个嵌套级别的索引......至少根据this
猜你喜欢
  • 2014-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-27
  • 1970-01-01
  • 2011-03-13
  • 2018-03-14
相关资源
最近更新 更多