bigquery 预订是自动的吗?

Posted

技术标签:

【中文标题】bigquery 预订是自动的吗?【英文标题】:bigquery reservations are automatic? 【发布时间】:2020-11-22 08:10:10 【问题描述】:

非常基本的问题。如果我在 BigQuery 上购买与特定项目 ID 相关的 flex 插槽,而无需 (1) 手动创建预留和 (2) 分配这些插槽,我与此项目相关的查询是否会自动计费使用弹性插槽?

我认为是这样 - 不清楚的文档表明在您购买插槽时会创建“默认”预订。因此,我想 BigQuery 可以识别用户的意图,除非另有说明,否则就是使用购买的容量。

如果我在插槽空闲时按需求定价,那将是双重打击。而且,我感觉鉴于我保留了 100 个插槽,我的查询感觉更慢。但我看不到确认使用预订的作业的方法。

【问题讨论】:

【参考方案1】:

预订

购买插槽后,您可以将它们分配给不同的存储桶,称为reservations。预留让您以对您的特定组织有意义的方式分配插槽。

购买时会自动创建一个名为 default 的预订 插槽。

默认预订没有什么特别之处——它是为了方便而创建的。您可以决定是否需要额外的预订或仅使用默认预订。

例如,您可以为生产工作负载创建一个名为 prod 的预留,并为测试创建一个名为 test 的单独预留。这样一来,您的测试作业就不会争夺生产工作负载所需的资源。或者,您可以为组织中的不同部门创建预订。

作业

要使用您购买的插槽,您需要将项目、文件夹或组织分配给预留。资源层次结构中的每个级别都从其上一级继承分配,除非您覆盖。也就是说,项目继承其父文件夹的分配,文件夹继承其组织的分配。

当从分配给预留的项目启动作业时,作业会使用该预留的插槽。

如果项目未分配给预留(直接或通过 从其父文件夹或组织继承),其中的作业 项目使用按需定价。

None 分配表示没有分配。分配给 None 的项目使用按需定价。无分配的常见用例是将组织分配给预留,并通过将它们分配给无来从该预留中选择退出某些项目或文件夹。如需更多信息,请参阅Assign a project to None。

创建任务

当您创建分配时,您指定该分配的工作类型:

QUERY:将此预留用于查询作业,包括 SQL、DDL、DML 和 BigQuery ML 查询。

PIPELINE:将此预留用于加载、导出和其他管道作业。

默认情况下,加载和导出作业是免费的,并且使用共享槽池。 BigQuery 不保证此共享池的可用容量。如果您正在加载大量数据,您的作业可能会在插槽可用时等待。在这种情况下,您可能需要购买专用插槽并将管道作业分配给它们。我们建议在禁用空闲槽共享的情况下创建一个额外的专用预留。

将加载作业分配给预留时,它们将无法访问空闲池。监控性能以确保作业具有足够的容量。否则,性能实际上可能比使用空闲池更差。

ML_EXTERNAL:将此预留用于使用 BigQuery 外部服务的 BigQuery ML 查询。

某些 BigQuery ML 查询使用 BigQuery 外部的服务。要为这些外部服务使用保留槽,请创建作业类型为 ML_EXTERNAL 的分配。

截图

完整的screen guide how to work with Reservations and Assignments 在这里。

【讨论】:

以上是关于bigquery 预订是自动的吗?的主要内容,如果未能解决你的问题,请参考以下文章

Google Bigquery Standard SQL - 已搜索目的地但未预订的 id 计数

SQL BigQuery:选择具有时间基础的查询

BigQuery 时区转换

Bigquery BI 引擎是不是适用于分区表

BigQuery 过程执行是不是完全同步?

Bigquery:UNNEST 重复与展平表性能