获取我们在 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属性不包含在 Broadcast Speed 报告中。

带宽

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

带宽报告包括以下属性:

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

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

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

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

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

未索引的查询

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

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

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

高级分析

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

firebase database:profile --raw

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

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

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

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

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

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