旧版预留简介
通过 BigQuery 预留,您可以从按需价格切换为基于容量的价格。使用基于容量的价格时,您可以为专用或自动缩放的查询处理容量付费,而不是为每个查询单独付费。
借助预留,您可以将查询容量(以槽为单位)分配给不同的工作负载或组织的不同部分。
使用利用 BigQuery 版本的预留时,可以创建容量承诺,但可以节省稳定状态工作负载的费用。
概览
BigQuery 提供两种计算(分析)价格模式:
默认情况下,系统以按需价格模式结算。使用预留,您可以切换到基于容量的价格,使用槽自动扩缩功能并购买折扣价的容量承诺。使用基于容量的模型时,不会收取处理的字节数费用。
您可以结合使用这两种计费模式。例如,您可以运行一些采用按需价格的工作负载,再搭配使用一些采用基于容量的价格的工作负载。由于结算模型是按项目指定的,因此这需要将多个项目用于查询作业。
预留的优势
使用 BigQuery 预留的优势包括:
可预测性。基于容量的价格提供可预测且一致的费用。您可以预先指定费用上限,还可以利用槽承诺,该承诺以折扣费率提供专用的持续容量。
灵活性。您可以选择要分配给工作负载的专用容量,也可以让 BigQuery 根据您的工作负载要求自动扩缩容量。您需要为至少以一秒为增量使用的槽付费。
工作负载管理。每个工作负载都有指定的 BigQuery 计算资源池可供使用。同时,如果工作负载没有用完其所有专用槽,则所有未使用的槽会自动与其他工作负载共享。
集中式购买:您可以为整个组织购买和分配槽。您无需为使用 BigQuery 的每个项目购买槽。
预留
BigQuery 容量以槽为单位,这些槽表示查询使用的虚拟 CPU。通常,您预配的槽数量越多,运行的并发查询数量也可更多,并且复杂查询的运行速度会更快。
槽在名为预留的池中分配。使用预留,您可以通过对特定组织有意义的方式分配槽。
例如,您可以为生产工作负载创建名为 prod
的预留,以及为测试创建一个名为 test
的单独预留。这样,您的测试作业就不会因生产工作负载所需的资源而展开竞争。或者,您可以为组织的不同部门创建预留。
预留可以包括始终分配的基准槽,以及自动缩放槽,这些槽根据您的需求动态添加或删除工作负载。
如果您在创建预留之前购买槽承诺,则系统会自动创建名为 default
的预留。default
预留没有什么特别之处;它只是为了方便使用。您可以决定是否需要其他预留,或者仅使用默认预留。
如需使用您分配的槽,您必须将一个或多个项目分配给预留,如下一部分所述。
预留是您可以指定槽分配的最低级层。预留中的槽分配由 BigQuery 调度器进行处理。
作业
如要使用分配的槽,您必须将一个或多个项目、文件夹或组织分配给预留。资源层次结构中的每个级别都会继承上一级别的分配。换句话说,如果未分配项目或文件夹,则该项目或文件夹将继承其父级文件夹或组织的分配(如有)。如需详细了解资源层次结构,请参阅整理 BigQuery 资源。
从分配给预留的项目启动作业时,该作业将使用该预留的槽。如果项目未分配到预留(直接分配或通过其父级文件夹或组织继承),则该项目中的作业将使用按需价格。
None
分配表示缺少分配。分配给 None
的项目使用按需价格模式。None
分配常见的使用场景是将某个组织分配给预留,并通过将该预留中的某些项目或文件夹分配给 None
来选择停用这些项目或文件夹。如需了解详情,请参阅将项目分配给 None。
创建分配时,请为该分配指定作业类型:
QUERY
:此预留用于 SQL、DDL、DML 和 BigQuery ML 查询在内的查询作业,。PIPELINE
:将此预留用于加载和提取作业。默认情况下,加载和提取作业是免费的,并可使用槽的共享池。BigQuery 并不保证此共享池的可用容量,也不保证您能实现的吞吐量。如果您要加载大量数据,则作业可能需要等待槽变为可用。在这种情况下,您可能需要购买专用槽并为其分配流水线作业。我们建议另外创建一个专用预留,并停用其闲置槽共享功能。
将加载作业分配给预留时,他们将失去对免费池的访问权限。监控性能以确保作业有足够的容量。否则,与使用免费池相比,性能可能会降低。
BACKGROUND
:当您选择使用您自己的预留运行 BigQuery 搜索索引管理作业或 BigQuery 变更数据捕获 (CDC) 后台作业时,请使用此预留。在通过 Datastream 的后台应用操作将源数据库复制到 BigQuery 时,也需要使用此预留。标准版中没有BACKGROUND
预留。ML_EXTERNAL
:此预留适用于使用 BigQuery 外部服务的 BigQuery ML 查询。如需了解详情,请参阅为 BigQuery ML 工作负载分配槽。标准版中没有ML_EXTERNAL
预留。
您不能将槽分配给特定任务。BigQuery 调度器会处理预留中的任务槽分配。
承诺
容量承诺是在一段最短的时间内购买的固定数量的 BigQuery 计算容量。对于使用版本创建的预留,容量承诺是可选的,但可以节省稳定状态工作负载的费用。
BigQuery 提供了几个承诺方案供您选择。它们的区别主要在于成本和承诺的最短期限。如需了解当前的价格信息,请参阅容量承诺价格。
包年。您购买了 365 天的承诺使用合约。您可以在 365 天后选择是继续续订,还是转换为其他类型的承诺方案。
包月。您购买了至少 30 天的承诺。30 天后,您可以随时删除该方案。
灵活槽:您购买了 60 秒的承诺使用合约。60 秒后,您可以随时将其删除。在购买长期承诺使用合约之前,灵活槽是测试固定费率结算模式下工作负载执行情况的好方法。它们也适用于处理周期性或季节性需求,或者处理负载较高的事件(例如报税季)。
无论您选择哪种方案,您的槽都不会在承诺使用合约结束时到期。这些槽将一直保留并计费,直到您将其删除。您还可以在最短时长后更改方案类型。
槽受可用容量的限制。当您尝试购买槽承诺时,不保证购买一定会成功。但是,一旦承诺购买成功,系统就会保证您的容量,直到您删除承诺为止。
如需详细了解这些方案,请参阅承诺方案。
预留中的槽分配
BigQuery 使用一种称为公平调度的算法在单个预留中分配槽容量。
BigQuery 调度器会强制先在一个预留中正在运行的查询所属的各项目之间均匀共享槽,然后再在给定项目的作业内进行共享。调度器提供最终公平性。因此,某些作业可能会在短期内获得不成比例的槽,但调度器最终会纠正此情况。调度器的目标是针对正在运行的任务,在过于严格的逐出规则(导致浪费槽时间)和过于宽松的逐出规则(导致包含长时间运行的任务的作业获得不成比例的槽时间)之间找到一个折中点。
如果某个重要的作业需要的槽数始终比它从调度器接收到的槽数多,请考虑创建一个具有保证槽数的额外预留,并将该作业分配给该预留。如需了解详情,请参阅工作负载管理。
空闲槽
在任何给定时间,某些槽都可能处于空闲状态。这可能包括:
- 未分配给任何预留的槽承诺。
- 分配给预留基准但当前未使用的槽。
默认情况下,在预留中运行的查询自动使用来自同一管理项目中的其他预留的空闲槽。这意味着只要有容量,作业就可以一直运行。空闲容量会根据需要立即抢占回原始分配的预留,而不管需要资源的查询的优先级是什么。此操作会自动实时进行。
如要停用此功能并强制预留仅使用已预配的槽位,请将 ignore_idle_slots
设置为 true
。将 ignore_idle_slots
设置为 true
的预留不会收到空闲槽。
您不能在不同版本的预留之间共享空闲槽。您只能共享基准槽或承诺槽。自动扩缩的槽可能暂时可用,但无法共享,因为它们可能会缩容。
只要 ignore_idle_slots
为 false,即使预留的槽数为 0
,也仍然可以访问未使用的槽。如果您仅使用 default
预留,我们建议您采用这种方式进行设置。 然后,您可以向该预留分配项目或文件夹,并且它仅使用空闲槽。
之前描述的行为不适用于 ML_EXTERNAL
类型的分配。BigQuery ML 外部模型创建作业使用的槽不是抢占式的;也就是说,预留中同时具有 ml_external 和查询分配类型的槽只能供其他查询作业使用,前提是这些槽未被 ML_EXTERNAL
作业占用。此外,这些作业不使用其他预留中的空闲槽。
限制
- 您购买的预留无法与其他组织共享。
- 您必须为每个组织创建一个单独的预留和一个单独的管理项目。
- 每个组织在单个位置最多可以有 10 个具有有效承诺的管理项目。
- 空闲容量无法在组织之间或单个组织内的不同管理项目之间共享。
- 承诺使用合约属于区域级资源。在一个单区域或多区域购买的承诺无法在任何其他单区域或多区域使用。承诺无法在单地区之间或单地区与多地区之间移动。
- 在一个管理项目中购买的承诺无法转移到另一个管理项目。
- 使用一个版本购买的承诺使用合约不能与其他版本的预留一起使用。
- 不同版本的预留之间不共享空闲槽。
- 自动扩缩的槽不可共享,因为它们不再需要时,它们会缩减。
配额
您的槽配额是您可以在某个位置购买的槽数上限。您无需按配额付费;您只需为预留和承诺付费。如需了解详情,请参阅预留配额和限制。如需了解如何增加槽配额,请参阅申请增加配额。
价格
如需了解预留价格,请参阅固定费率价格。