BigQuery - 查询优化



BigQuery 由云计算提供支持,但这并不意味着计算能力是无限的。它也不意味着每个查询的运行时间都完全相同,无论时间或有多少进程竞争插槽。

什么是查询优化?

优化是一个经常被数据工程和其他编程领域的人员使用的流行词。

对于SQL优化分为两种形式

  • 基于代码的优化
  • 基于平台的优化

基于代码的优化概念化和执行较为复杂。因此,本教程不包含此内容。相反,我们将重点介绍 BigQuery 中的工具,这些工具使用户能够准确跟踪并积极抑制过度使用。

通过提高可见性和创造性的槽分配,可以维护一个拥有多个用户的 BigQuery 项目,并为所有用户提供足够的存储空间和槽空间。这是通过以下方式实现的:

  • 通过执行图和数据血缘工具跟踪使用情况。
  • 以不同的模式运行查询,以减少在给定时间处理的数据量。
  • 利用 BI 引擎等工具对重复违规者(表)进行分割,以主动限制在高流量时段处理的数据范围。

批处理模式与交互式模式

在 BigQuery Studio SQL 环境中编写前几个查询后,所有查询的运行方式似乎都相同。从某种意义上说,你是对的。所有查询都使用一定数量的槽,在执行期间以槽小时表示。但是,实际上有两种不同的方式来运行 BigQuery 查询以节省处理和成本。

大多数 BigQuery 查询在所谓的交互模式下执行。事实上,这是 BigQuery 查询的默认执行状态。并且 UI 不会使更改模式的能力可见或明显。要查看或更改查询的执行模式,需要导航到查询设置。

在该视图中,您可以配置下一个查询运行。除了选择查询模式外,开发人员还可以选择如何保存查询的结果,可以选择临时表、新的 BigQuery 表或覆盖现有表的内容。这些选项下方是选择批处理与交互式的菜单。

虽然交互模式会立即执行查询,但批处理模式允许用户:

  • 排队所需的 BigQuery 作业。
  • 运行低优先级查询,而不会影响高优先级作业(这些作业可能消耗更多资源)。

运行批处理作业可以帮助用户规避 BigQuery 查询执行限制:用户最多可以运行 20 个并发查询。

如果批处理作业与正在进行的交互式作业竞争槽,则批处理作业将被暂停或“排队”,直到有可用空间。这有助于节省资源并避免达到对交互式查询施加的硬速率限制。

广告