Firebase Realtime Database 操作类型

Firebase Realtime Database 性能分析器命令

要生成关于 Realtime Database 实例中操作的速度和带宽使用情况的报告,请使用以下命令:

firebase database:profile
标志选项 说明
-h, --help 输出用法信息。
-o, --output FILENAME 将输出内容保存到指定的文件。
-i, --input FILENAME 基于指定的文件(而不是来自服务器的流日志)生成报告。
-d, --duration SECONDS 收集指定秒数的数据库使用情况信息。
--raw 输出以(换行符分隔的)JSON 格式收集的原始统计信息。

操作类型

concurrent-connect

此操作体现的是与数据库的实时连接(例如,当新客户端通过 SDK 建立连接时)。concurrent-connect 操作不涵盖 RESTful 连接。

{
    "name": "concurrent-connect",
    "timestamp": 1484776334900
}

concurrent-disconnect

concurrent-disconnect 操作体现的是已与数据库断开的连接(例如,当客户端断开连接或停止工作时)。

{
    "name": "concurrent-disconnect",
    "timestamp": 1484776341844
}

realtime-write

来自实时连接的写入请求。例如,适用于 Web 客户端的 set()push() 操作。删除请求也会计为 realtime-write 操作,并显示为 0 字节的写入。

{
    "allowed": true, // If security rules allow the operation
    "bytes": 1,
    "millis": 2,
    "name": "realtime-write",
    "path": [
        "foo"
    ],
    "timestamp": 1484776538763
}

realtime-transaction

此操作类型包含通过实时连接进行的事务。 重复的事务可能是由失败的尝试和重试造成的。

{
    "allowed": true,
    "bytes": 20,
    "millis": 2,
    "name": "realtime-transaction",
    "path": [
        "foo"
    ],
    "timestamp": 1484776854610
}

realtime-update

这些实时更新操作体现特定数据的重写,而不是 realtime-write 中更广义的写入操作。

{
    "allowed": true,
    "bytes": 5,
    "millis": 2,
    "name": "realtime-update",
    "path": [
        "foo"
    ],
    "timestamp": 1484776538769
}

listener-listen

这些操作体现的是客户端对特定位置的数据的初始请求。例如,适用于 Web 客户端的 on()once() 方法。

{
    "allowed": true,
    "bytes": 0,
    "millis": 26,
    "name": "listener-listen",
    "path": [
        "foo"
    ],
    "querySet": [],
    "timestamp": 1484776335024,
    "unIndexed": false
}

listener-broadcast

此操作涵盖从服务器发送到所有在每次写入和更新操作后侦听给定位置的客户端的数据。更改数据会触发广播操作。不过,如果没有任何正在进行侦听的客户端,您可能会看到 0 项更新。

{
    "bytes": 56, // Total bytes sent across clients
    "clientsUpdated": 3, // This may be 0 if no clients are listening
    "millis": 17,
    "name": "listener-broadcast",
    "path": [
        "baz",
        "mar"
    ],
    "timestamp": 1484775969928
}

listener-unlisten

这些操作体现的是停止工作的侦听客户端或通过分离方法停止侦听的侦听客户端(例如,适用于 Web 的 off() 或适用于 iOS 的 removeAllObservers)。

{
    "name": "listener-unlisten",
    "path": [
        "foo"
    ],
    "timestamp": 1484776335044
}

rest-read

通过 REST API 对请求执行 GET 操作。

{
    "allowed": true,
    "bytes": 348, // This would be 0 if the read data was null
    "millis": 26,
    "name": "rest-read",
    "path": [],
    "querySet": [
        {
            "default": true,
            "endIndexValue": "[MAX_NAME]",
            "equality": false,
            "index": {},
            "limit": null,
            "range": false,
            "simpleLimit": false,
            "startIndexValue": "[MIN_NAME]",
            "viewFrom": null
        }
    ],
    "timestamp": 1484775747416
}

rest-write

通过 REST API 对请求执行 PUTPOST 操作。DELETE 请求显示为 0 字节的 rest-write 操作。

{
    "allowed": true,
    "bytes": 13,
    "millis": 116,
    "name": "rest-write",
    "path": [],
    "timestamp": 1484775917216
}

rest-transaction

对于类似事务的行为,请使用条件请求rest-transaction 操作使用 Etagif-match 标头捕获请求。

{
    "allowed": true,
    "bytes": 13,
    "millis": 116,
    "name": "rest-transaction",
    "path": [],
    "timestamp": 1484775917216
}

rest-update

通过 REST API 进行的更新体现 PATCH 请求。

{
    "allowed": true,
    "bytes": 5,
    "millis": 11,
    "name": "rest-update",
    "path": [
        "baz",
        "mar"
    ],
    "timestamp": 1484775969930
}

on-disconnect-put

这些操作体现的是将 onDisconnect 监听器添加到写入操作这一过程。例如,当您使用 onDisconnect().setValue() 时。

{
    "allowed": true,
    "bytes": 4,
    "millis": 2,
    "name": "on-disconnect-put",
    "path": [
        "baz",
        "mar"
    ],
    "timestamp": 1484775969930
}

on-disconnect-update

这些操作体现的是将 onDisconnect 监听器添加到更新操作这一过程。例如,当您使用 onDisconnect().updateChildren() 时。

{
    "allowed": true,
    "bytes": 4,
    "millis": 2,
    "name": "on-disconnect-update",
    "path": [
        "baz",
        "mar"
    ],
    "timestamp": 1484775969930
}

on-disconnect-cancel

这些操作体现的是移除 onDisconnect 监听器这一过程。 例如,当您使用 onDisconnect().set().cancel() 时。

{
    "millis": 2,
    "name": "on-disconnect-cancel",
    "path": [
        "baz",
        "mar"
    ],
    "timestamp": 1484775969930
}

run-on-disconnect

这些操作体现的是触发 onDisconnect 监听器这一过程。 当实时客户端在至少添加一个 onDisconnect 监听器后断开连接时,分析器会记录单个 run-on-disconnect 操作,以反映触发的所有 onDisconnect 监听器的总计字节和时间。

{
    "bytes": 4,
    "millis": 2,
    "name": "run-on-disconnect",
    "timestamp": 1484775969930
}