获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

分析您的数据库

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

使用Firebase CLI中内置的数据库分析器工具测量 Firebase 实时数据库的性能。探查器工具在给定时间段内记录数据库中的所有活动,然后生成详细报告。使用详细报告来解决数据库性能问题、发现问题区域并减少未编制索引的查询。

建立个人资料

  1. 在开始分析 Firebase 实时数据库之前,请确保您使用的是最新版本的Firebase CLI ,并且您已针对要分析的数据库和项目对其进行了初始化。请注意,您必须是该项目的编辑或所有者才能进行概要分析。

  2. 使用以下命令开始分析您的数据库:

    firebase database:profile
    分析器在记录来自您的数据库的操作并构建配置文件时显示一条状态消息。

  3. Enter完成配置文件并显示结果。

解释你的结果

分析器工具汇总了它收集的有关数据库操作的数据,并将结果显示在三个主要类别中:速度带宽未索引查询

速度

速度报告测量每种操作类型的服务器响应时间(以毫秒为单位)。但是,速度报告中测量的速度可能实际上并不能反映最终用户的速度体验。包括网络条件在内的不同因素可能会增加客户端的延迟。

速度报告包括以下属性:

  • 路径:数据库中发生操作的路径。如果有超过 25 个子节点,分析器工具会将它们折叠到父路径中并添加$wildcard标记。您可能会在报告中看到数据库的根目录,由正斜杠/表示。
  • 计数:在给定路径上发生的操作数。
  • 平均执行速度:服务器执行处理该路径上特定操作类型所需的业务逻辑所需的平均时间。此处测量的时间间隔在下文所述的“平均等待时间”测量的时间间隔之后开始。
  • 平均挂起时间:请求在执行前排队等待的平均时间。这种延迟对于所有客户端发起的请求都是常见的。总的服务器端请求延迟大致是该请求的挂起时间和执行速度的总和。
  • 权限被拒绝:给定路径上被Firebase 数据库规则阻止的数据库上的操作数。
按操作类型的速度报告
读取执行速度客户端请求从数据库读取数据的服务器响应时间。读取执行时间通常与正在读取的数据量成比例,但即使是一些小的读取也可能会因缓存预取而延迟。
写执行速度客户端请求将数据写入数据库的服务器响应时间。写入执行时间随写入的数据量而变化。
连接执行速度建立到数据库客户端的请求的服务器响应时间。连接请求的延迟主要由与连接管理相关的内存服务器端簿记控制。
广播执行速度

服务器将数据分发给侦听给定路径以进行实时更新的客户端所花费的时间。

Broadcast Speed Report 中的Count属性聚合发生的广播数量,而不是接收信息的客户端数量。例如,如果有 10 个客户端在给定路径上侦听,并且服务器向所有 10 个客户端广播更新,则广播计数仅反映 1 个广播,即使有 10 个客户端接收到数据。

广播速度报告中不包含Permission Denied属性。

带宽

带宽报告提供有关您的数据库在传入和传出操作中消耗多少数据的见解。但是,您不应该使用带宽报告来估计计费,因为它不包括用于其他操作的带宽,例如分析您的数据库。带宽报告粗略估计了从数据库读取、写入和广播操作所消耗的数据的有效负载大小。它是一种衡量绩效的工具,而不是预测计费的工具。

带宽报告包括以下属性:

  • 路径:数据库中发生操作的路径。如果有超过 25 个子节点,分析器工具会将它们折叠到父路径中。

  • 总计:在给定路径的所有操作中使用的传出或传入字节总数。

  • 计数:在给定路径上发生的操作数。

  • 平均:在给定路径(字节/写入或字节/读取)的操作中下载或上传的平均字节数。

带宽报告
下载字节通过客户端 SDK 和 REST API 发送的读取和广播操作消耗的数据。
上传字节通过进入数据库服务器的写入请求消耗的数据。删除显示为传入下 0 字节的写入。

未编入索引的查询

未索引的查询可能会很昂贵,因为客户端会在某个位置下载所有数据,然后对其执行查询。这会占用比必要更多的带宽。尽可能多地解决未编制索引的查询,以优化数据库的性能。

未编制索引的查询报告显示以下属性:

  • 路径:数据库中发生未索引查询的路径。
  • 索引:您应该添加以解决未索引查询的规则。在Index your data中了解有关索引的更多信息。
  • 计数:在给定路径发生的未索引查询的数量。

高级分析

要查看数据库正在处理的所有操作,请在分析数据库时使用--raw标志,如下所示:

firebase database:profile --raw

原始输出还包括每个操作的客户端信息,例如userAgent字符串和 IP 地址。在Firebase 实时数据库操作类型中详细了解 Firebase 实时数据库中配置的不同操作。

分析器工具:不是计费工具

不要使用分析器工具来估计带宽成本。 Profiler 工具旨在让您全面了解数据库的性能,帮助您监控操作和解决问题,而不是估算帐单。它不考虑网络流量,它只记录响应中发送的应用程序数据的估计。

以下是由 Firebase 计费的一些常见网络流量示例,这些示例未包含在您的数据库配置文件中:

  • 协议开销:服务器和客户端之间的一些额外流量是建立和维护会话所必需的。根据底层协议,此流量可能包括:Firebase 实时数据库的实时协议开销、WebSocket 开销和 HTTP 标头开销。每次建立连接时,此开销与任何 SSL 加密开销相结合,都会增加连接成本。虽然这通常不是很大的带宽,但如果您的有效负载很小或者您进行频繁的短连接,它可能会很大。
  • SSL 加密开销:存在与安全连接所需的 SSL 加密开销相关的成本。平均而言,初始握手的成本约为 3.5KB,每条传出消息的 TLS 记录标头成本约为 40B。对于大多数应用程序,这只是您账单的一小部分。但是,如果您的特定情况需要大量 SSL 握手,这可能会占很大比例。例如,不支持 TLS 会话票证的设备可能需要大量 SSL 连接握手。

阅读更多关于了解和估算账单的信息。