【问题标题】:BigQuery - 'Elapsed time' or 'Slot time consumed', which is a better measure?BigQuery - “经过的时间”或“消耗的槽时间”,哪个是更好的衡量标准?
【发布时间】:2020-02-27 22:50:52
【问题描述】:

我正在尝试比较两个查询,以了解哪个更好和优化。我应该查看“经过的时间”还是“消耗的时隙时间”?哪个是更好的衡量标准?

以下是一个例子:

查询 1 - 经过的时间:0.3 秒。插槽时间消耗:0.100 秒 查询 2 - 已用时间:0.5 秒,时隙消耗时间:0.081 秒

【问题讨论】:

  • 你在乎什么?可能经过的时间,这是您观察到的时间。

标签: google-cloud-platform google-bigquery


【解决方案1】:

我们需要同时查看两者。首先,让我们了解一下这些是什么。

'elapsed time' 是 BQ 执行查询所用的总时间。 'slot time' 是 vCPU 执行查询所花费的总时间。

因此,“已用时间”会告诉您查询执行的速度,但“时隙时间”会告诉您执行查询所需的 CPU 容量。

理想情况下,'slot time' 应该小于 'elapsed time',因为 BQ 会将整个查询分为多个阶段并在不同的 CPU 中执行,并且会并行执行。然后,巩固结果(如果有的话)并给出结果需要一些时间,所以它需要一些时间来巩固。

如果表设计得当,我的意思是,进行了适当的分区并定义了集群层次结构,那么“经过时间”将高于“时隙时间”,也不应该有太大的差异。

因此,如果“时隙时间”远高于“经过时间”,那么优化查询和表设计的潜力也很大。此外,GCP 将根据已用于执行查询的槽数对 BQ 收费。一些链接供参考。

https://cloud.google.com/bigquery/query-plan-explanation

https://cloud.google.com/bigquery/docs/slots

https://cloud.google.com/bigquery/docs/best-practices-costs

【讨论】:

    猜你喜欢
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-13
    • 1970-01-01
    • 1970-01-01
    • 2017-04-30
    • 2022-09-26
    相关资源
    最近更新 更多