使用查询解释分析查询执行情况
本页面介绍了如何在执行查询时检索查询执行信息。
使用查询解释
您可以使用查询解释功能来了解查询的执行方式。这会提供可用于优化查询的详细信息。
您可以通过 Google Cloud 控制台使用查询解释。
控制台
在查询编辑器中执行查询,然后打开解释标签页:
-
在 Google Cloud 控制台中,前往数据库页面。
- 从数据库列表中选择一个 Firestore 数据库。 Google Cloud 控制台会为该数据库打开 Firestore Explorer。
- 在查询编辑器中输入查询,然后点击运行。
-
点击解释标签页以查看查询分析输出。
分析
查询解释的输出包含两个主要组成部分:摘要统计信息和执行树。请考虑以下查询示例:
db.pipeline().collection('/users').sort(field("status").ascending()).limit(100)
摘要统计信息
解释性输出的顶部包含执行统计信息的摘要。使用这些统计信息可确定查询是否具有高延迟或高费用。它还包含内存统计信息,可让您了解查询与内存限制的接近程度。
Execution:
results returned: 2
request peak memory usage: 20.25 KiB (20,736 B)
data bytes read: 148 B
entity row scanned: 2
Billing:
read units: 1
执行树
执行树会将查询执行描述为一系列节点。底部节点(叶节点)会从存储层检索数据,然后向上遍历树以生成查询响应。
如需详细了解每个执行节点,请参阅执行参考文档。
如需详细了解如何使用这些信息来优化查询,请参阅优化查询执行。
以下是执行树示例:
Tree:
• Compute
| $out_1: map_set($record_1, "__name__", $__name___1, "__key__", unset)
| is query result: true
|
| Execution:
| records returned: 2
| latency: 5.96 ms (local <1 ms)
|
└── • Compute
| $__name___1: map_get($record_1, "__key__")
|
| Execution:
| records returned: 2
| latency: 5.88 ms (local <1 ms)
|
└── • MajorSort
| fields: [$v_1 ASC]
| output: [$record_1]
| limit: 100
|
| Execution:
| records returned: 2
| latency: 5.86 ms (local <1 ms)
| peak memory usage: 20.25 KiB (20,736 B)
|
└── • Compute
| $v_1: map_get($record_1, "status")
|
| Execution:
| records returned: 2
| latency: 5.23 ms (local <1 ms)
|
└── • TableScan
source: /users
order: UNDEFINED
properties: *
row range: (-∞..+∞)
output record: $record_1
variables: [$record_1]
Execution:
records returned: 2
latency: 4.68 ms
records scanned: 2
data bytes read: 148 B