【问题标题】:Check number of slots used by a query in BigQuery检查 BigQuery 中查询使用的槽数
【发布时间】:2019-01-11 14:39:50
【问题描述】:

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

【问题讨论】:

标签: google-bigquery google-cloud-stackdriver


【解决方案1】:

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

可以在REST reference 中找到有关工作的更多详细信息。请参阅query.statistics.totalSlotMsstatistics.query.queryPlan[].parallelInputs 了解更多信息。

【讨论】:

  • 对不起,这不是很清楚,你能提供一个更详细的例子来说明你的意思
  • 你到底有什么不明白的,塔米尔?我也许可以帮你。无论如何,这里也有更多关于 Query Plan Explanation 的文档。
【解决方案2】:

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

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

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

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

【讨论】:

  • Timeline 为您提供由 elapsedMs 定义的特定时间点的 totalSlotsMs。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多