【问题标题】:Understand where the bandwidth usage is coming from in Firebase database了解 Firebase 数据库中带宽使用的来源
【发布时间】:2017-01-20 00:25:23
【问题描述】:

我的应用在使用 Firebase 数据库的带宽使用方面正在增长,我正在尝试优化我的查询以使用更少的带宽(从而降低成本),但我这样做非常盲目,因为没有关于我的数据库使用情况的统计信息(我不知道哪些查询占用的带宽最多)。

有没有办法知道哪些查询占用了大量带宽?您如何优化 Firebase 数据库的使用?

编辑:

我有一个聊天网站,我使用诸如messagesRef.child(conversationID).limitToLast(25).on('child_‌​added'... 之类的观察者 conversationsRef.child(conversationID).('participants').on('value'...

【问题讨论】:

  • 您如何观察数据库中的节点?首选observeSingleEventOfTypeobserveEventType,因为这会在第一次检索后终止并尽可能删除观察者
  • 不幸的是,它只是整体显示。你能发布一些你的查询吗?

标签: firebase firebase-realtime-database


【解决方案1】:

Firebase Profiler 为此救了我的命。 https://firebase.google.com/docs/database/usage/profile

能够准确指出占用带宽的引用(包括子引用),这使得找出代码的哪一部分有问题变得更加容易。

【讨论】:

  • 为什么我直到现在才知道这件事? :)
【解决方案2】:

没有查询调整工具,如果您正在寻找的话。您可以构建简单的时间日志记录,以在发出查询之前和之后捕获数据,记录该数据,然后从客户端收集数据,以缩小到性能最差的数据。

如果不查看实际查询或数据模型,很难提供帮助。

【讨论】:

  • 非常同意你的 ZagNut。在“then()”上记录查询完成将对您有所帮助。
【解决方案3】:

以防万一您还没有使用 Firebase 的 .indexOn()... 这是提高性能的最佳方式(他们在下面这么说),请查看 Index Your Data。 Firebase 家伙说:

如果您提前知道索引是什么,则可以通过 Firebase 实时数据库规则中的 .indexOn 规则来定义它们,以提高查询性能

【讨论】:

    【解决方案4】:

    高度同意 ZagNut 的回答。

    “then()”上的记录查询完成将在这里为您提供帮助。

    您可以在客户端保留节点请求的查询计数,并通过客户端 ID 将该请求计数保存在与 firebase 数据库上的数据结构不同的节点中。

    现在过滤这些查询以查找使用模式。

    谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-28
      • 1970-01-01
      • 1970-01-01
      • 2016-12-21
      • 1970-01-01
      • 1970-01-01
      • 2020-04-16
      相关资源
      最近更新 更多