检查BigQuery中查询使用的插槽数

时间:2019-01-11 14:39:51

标签: google-bigquery google-cloud-stackdriver

有没有一种方法可以检查在BigQuery执行查询期间查询使用了多少个插槽?我检查了执行计划,但我只能看到以毫秒为单位的插槽时间,但是看不到任何参数或任何图形来显示执行期间使用的插槽数量。我什至尝试查看Stackdriver Monitoring,但找不到类似的东西。请让我知道它是否可以通过某种方式进行计算,或者是否可以在我可能错过的地方看到它。

2 个答案:

答案 0 :(得分:0)

BigQuery作业将从作业元数据中的扩展查询统计信息中报告时隙毫秒总数,这类似于计算成本。查询计划的每个阶段还指示该阶段的输入统计信息,可用于指示每个阶段分派的工作单元数。

可以在REST reference中找到有关该表示形式的更多详细信息。有关更多信息,请参见query.statistics.totalSlotMsstatistics.query.queryPlan[].parallelInputs

答案 1 :(得分:0)

BigQuery现在在Jobs API JSON中提供了一个称为“时间轴”的键。此结构提供“ statistics.query.timeline []。completedUnits”,您可以在作业执行期间或之后获取。如果您选择在执行作业后提取此信息,则“ completedUnits”将是在查询执行期间使用的所有工作单位(插槽)的累积总和。

该问题可能有两部分:(1)使用的插槽总数(已完成的工作单元)或(2)查询在某个时间点使用的最大并行单元数。

对于(1),答案如上,由“ completedUnits”给出。
对于(2),您可能需要考虑所有查询阶段的queryPlan.parallelInputs的最大值,这将指示“该阶段的可并行工作单元的数量”(https://cloud.google.com/bigquery/query-plan-explanation

如果在此之后,您还想知道在整个按需查询项目中分配的2000个并行插槽是否足够,则需要找到在您的所有查询中发生的时间点使用的插槽最大的项目。这不是一项艰巨的任务,但是Stackdriver监视为此提供了最清晰的视图。