全新推出 Cloud Firestore(测试版):试用 Firebase 和 Google Cloud Platform 全新推出的规模可扩展且灵活的数据库。详细了解 Cloud Firestore

分析您的数据库

您可使用 Firebase CLI 内置的数据库分析器工具衡量自己的 Firebase 实时数据库的性能。此分析器工具会记录给定的时间段内数据库中的所有活动,然后生成详尽的报告。您可以使用这些详尽的报告来排查数据库性能问题、找出存在问题的方面,以及减少未编入索引的查询。

构建分析

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

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

    firebase database:profile
    记录数据库中的操作并构建分析时,此分析器工具会显示状态消息。

  3. Enter 键完成分析并显示结果。

解读结果

此分析器工具会汇总所收集的关于数据库操作的数据,并按三个主要类别显示结果:速度带宽未编入索引的查询

速度

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

速度报告包含以下属性:

  • 路径:所发生的操作在数据库中的路径。如果子节点超过 25 个,则分析器工具会将它们合拢到父路径中,并添加一个 $wildcard 标记。您可能会在此报告中看到数据库的根目录(以正斜杠 / 表示)。
  • 计数:在给定路径中发生的操作数。
  • 平均值:服务器处理该路径中的特定操作类型所需的平均时间。
  • 权限遭拒次数:给定路径中被数据库的 Firebase 数据库规则阻止的操作数。
速度报告(按操作类型)
读取速度 对于客户端发出的读取数据库数据的请求,服务器所用的响应时间。
写入速度 对于客户端发出的向数据库写入数据的请求,服务器所用的响应时间。
广播速度

服务器将数据分发到在侦听给定路径以获取实时更新的客户端所用的时间。

广播速度报告中的计数属性汇总的是所发生的广播次数,而不是收到信息的客户端的数量。例如,如果有 10 个客户端在侦听给定路径,并且服务器向所有 10 个客户端都广播了一次更新,则即使 10 个客户端都接收了数据,广播计数也仅会反映 1 次广播。

广播速度报告中不包含权限遭拒次数属性。

带宽

带宽报告围绕数据库的传入和传出操作所消耗的数据量提供了数据分析。但是,您不能使用带宽报告来估算费用,因为其中不包括其他操作(例如对数据库进行分析)所用的带宽。带宽报告大致估算了进出数据库的数据(读取、写入和广播操作所使用的数据)的有效负载大小。这是一个用于衡量性能的工具,而不是预测费用的工具。

带宽报告包含以下属性:

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

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

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

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

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

未编入索引的查询

未编入索引的查询可能会消耗大量带宽,因为客户端会下载一个位置下的所有数据,然后再对其进行查询。这会占用很多不必要的带宽。请尽可能将未编入索引的查询编入索引,以优化数据库的性能。

“未编入索引的查询”报告会显示以下属性:

  • 路径:未编入索引的查询在数据库中的路径。
  • 索引:为了将未编入索引的查询编入索引而应添加的规则。请参阅将数据编入索引,以详细了解索引编制。
  • 计数:在给定路径中发生的未编入索引的查询的数量。

高级分析

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

firebase database:profile --raw

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

分析器工具:不是结算工具

请勿使用分析器工具来估算带宽费用。 分析器工具旨在为您提供数据库性能的整体概况,帮助您监控操作和排查问题,而不是估算费用。它不会考虑网络流量,只会记录进行响应时发送的应用数据的估算量。

对于有些网络流量,Firebase 会计费,但它们不会出现在数据库分析中。以下是这类流量的一些常见示例:

  • 协议开销:在服务器与客户端之间建立和维护会话需要一些额外的流量。根据底层协议,这部分流量可能包括:Firebase 实时数据库的实时协议开销、WebSocket 开销和 HTTP 标头开销。每次建立连接时,这部分开销与所有 SSL 加密开销会一起产生连接费用。虽然这通常不会占用大量带宽,但如果您的有效负载很小或者您频繁地进行短时连接,那么这部分开销产生的费用可能会较高。
  • SSL 加密开销:要实现安全连接,需要进行 SSL 加密,而 SSL 加密开销也会产生相应的费用。平均来讲,初始握手的开销大约为 3.5KB,每条传出讯息的 TLS 记录标头大约为 40B。对于大多数应用来说,这部分费用只占帐单的一小部分。但是,如果您的具体使用情境需要大量的 SSL 握手,这部分费用所占的比例可能会较高。例如,不支持 TLS 会话票证的设备可能需要大量的 SSL 连接握手。

请参阅了解和估算您的帐单以了解详情。

发送以下问题的反馈:

此网页
Firebase 实时数据库
需要帮助?请访问我们的支持页面