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