BigQuery - 查询优化
BigQuery 由云计算提供支持,但这并不意味着计算能力是无限的。这也并不意味着每个查询都会运行完全相同的时间长度,无论一天中的什么时间或有多少进程在竞争时隙。
什么是查询优化?
优化是一个流行词,经常被数据工程和其他编程学科的人使用。
对于SQL,优化有两种形式 −
- 基于代码的优化
- 基于平台的优化
基于代码的优化在概念化和执行方面很复杂。因此,它超出了本教程的范围。相反,我们将专注于 BigQuery 中的工具,使用户能够准确跟踪和主动抑制过度使用。
通过提高可见性和创造性的插槽(Slot)分配,可以维护具有多个用户的 BigQuery 项目,并为所有用户提供足够的存储空间和插槽(Slot)空间。这是通过 − 实现的
- 通过执行图和数据沿袭工具跟踪使用情况。
- 以不同的模式运行查询以减少在给定时间内处理的数据量。
- 利用 BI Engine 等工具对重复违规者(表)进行细分,以主动限制在高流量时段处理的数据范围。
批处理与交互模式
在 BigQuery Studio SQL 环境中编写前几个查询时,似乎所有查询都以相同的方式运行。而且,从某种意义上说,你是对的。所有查询都会利用一定数量的插槽(Slot)位,以执行期间的插槽(Slot)小时数表示。但是,实际上有两种不同的方法来运行 BigQuery 查询以节省处理和成本。
大多数 BigQuery 查询都是在所谓的交互模式下执行的。事实上,这是 BigQuery 查询的默认执行状态。并且 UI 不会使更改模式的功能可见或明显。要查看或更改查询的执行模式,需要导航到查询设置。
进入该视图后,您可以配置下一个查询运行。除了选择查询模式之外,开发人员还可以选择如何保存查询结果,显示的选项包括临时表、新 BigQuery 表或覆盖现有表的内容。这些选项下方是用于选择批处理与交互式的菜单。
虽然交互式模式可以立即执行查询,但批处理模式允许用户−
- 将所需的 BigQuery 作业排队。
- 运行优先级较低的查询,而不会影响优先级较高的作业(可能消耗更多资源)。
运行批处理模式作业可帮助用户规避 BigQuery 查询执行限制:用户最多可以运行 20 个并发查询。
如果批处理作业与正在进行的交互式作业争夺插槽(Slot),则批处理作业将被搁置或"排队",直到有可用空间。这有助于节省资源并避免达到对交互式查询施加的硬速率限制。