使用 Reservations 管理工作负载
本页面介绍如何使用 BigQuery Reservations 来帮助您管理 BigQuery 工作负载。
选择结算模式
您可以随时切换按需结算和基于容量的结算模式,也可以选择混合使用这两种模式。这两种价格模式互为补充。按需结算可让您仅在需要使用槽时付费,而基于容量的结算可让您为可预测的工作负载预留槽分配,并且价格通常低于按需价格。
选择基于容量的结算方式时,请考虑以下因素:
- 费用。 Google 建议您的每月分析支出约为最低的 BigQuery 基于容量的承诺。
- 效率。如果您的工作负载不稳定或者运行得并不频繁,则按需价格可能更高效。如采用按需价格模式,您可以仅在需要使用槽时付费。
- 可预测性。如果您看重每月费用的可预测性,则建议首选基于容量的结算模式,因为您可以选择每个月支付一致的费用。
- 资源。基于容量的结算模式和按需结算模式在提供容量的方式上存在差异。如需了解详情,请参阅估算要购买的槽数。
作为新客户,建议您先选择基于容量的结算方式。您可以随时查看相应的按需结算费用,并可以随时切换适合您的模式。
您还可以尝试槽自动扩缩。自动扩缩槽可让您灵活地处理突增的工作负载,非常适合用于处理容量需求的变化。
您还可以通过将工作负载或业务部门组织到不同的项目或文件夹中并将每个工作负载或业务部门分配到预留或按需结算,从而在工作负载级别或业务部门级别将按需结算和基于容量的结算模式组合在一起。
您可以在一个区域使用基于容量的结算,而在另一个区域使用按需结算。默认情况下,所有项目都使用按需结算模式。在同一区域内,您可以将项目、文件夹或组织分配到预留,从而选择基于容量的结算。例如,如果您在美国多区域购买了槽承诺并为您的组织分配了默认预留,则您的组织将在美国多区域中基于容量结算,但在所有其他区域中仍按需结算。
在同一区域内,您可以通过将项目明确分配到预留来组合使用基于容量的结算和按需结算。任何未分配给预留的项目仍会采取按需结算。您还可以通过分配预留 ID none
来明确将项目分配为使用按需结算。如果您将文件夹或组织分配到预留,但希望该文件夹或组织中的部分项目使用按需结算,这将非常有用。如需了解详情,请参阅将项目分配给 None。
采用按需结算方式的项目所使用的容量独立于您承诺的容量。这些项目不会影响您承诺的容量的可用性。
创建管理项目
在您创建承诺和预留时,它们与一个 Google Cloud 项目相关联。此项目管理 BigQuery Reservations 资源,并且是这些资源的主要结算来源。此项目不一定得是 BigQuery 作业所在的项目。
Google 建议您为 Reservations 资源创建专用项目。此项目称为“管理”项目,因为它将承诺的结算和管理集中到一处。为此项目提供一个描述性名称,例如 bq-COMPANY_NAME-admin
。然后创建一个或多个单独的项目来保存 BigQuery 作业。
只能将管理项目所在的组织资源中的项目分配给预留。如果管理项目不属于组织,则只有该项目才能使用槽。
管理项目按承诺的槽付费。使用槽的项目需要支付存储费用,但无需支付槽费用。您可以购买多种方案(例如,一年期和三年期),并将槽放在同一个管理项目中。
最佳实践是限制管理项目的数量。这有助于简化结算管理和槽分配。建议在可行的情况下,为组织的所有预留创建一个管理项目。复杂的组织可能需要更多管理项目来满足管理或结算要求。
创建多个管理项目
在某些情况下,建议您创建多个管理项目,以实现以下目的:
- 将多个预留和承诺的费用分离到不同的组织部门。
- 将一个或多个槽承诺映射到特定的预留集。
空闲槽容量不会在不同管理项目中的预留之间共享。
如果您位于 Google Cloud 控制台的 BigQuery 页面中,则只能查看当前所选管理员项目的预留和承诺。
估算要购买的槽数
BigQuery 的架构支持以更多的资源进行线性扩缩。根据工作负载的实际情况,增加容量可能会为您带来更多益处。因此,选择最佳的槽购买数取决于您对性能、吞吐量和效用的要求。
您可以使用基准槽和自动扩缩槽进行实验,以确定最佳槽配置。例如,您可以依次使用 500 个基准槽、1,000 个槽、1,500 个槽和 2,000 个槽来测试工作负载,并观察这些槽数量对性能的影响。
您还可以检查项目当前的槽使用量以及您每月希望支付的费用。按需结算工作负载存在 2000 个槽的软上限,但重要的是使用 INFORMATION_SCHEMA.JOBS*
视图、Cloud Logging、Jobs API 或 BigQuery 审核日志检查您的项目目前实际使用了多少个槽。如需了解详情,请参阅直观显示可用的槽和分配的槽。
购买槽并运行工作负载至少七天后,您可以使用槽估算器(预览版)来分析性能并模拟添加或减少槽的效果。如需了解详情,请参阅估算槽容量要求。
使用预留管理工作负载和部门
您可以使用 BigQuery Reservations 来隔离您针对各种工作负载、团队或部门的承诺容量,具体方法是创建更多预留并将项目分配到这些预留。预留是一个独立的资源库,它具备一项额外的优势,即可以利用整个组织的闲置容量。
例如,假设您拥有 1,000 个槽的总承诺容量和 3 种工作负载类型:数据科学、ELT 和 BI。
- 您可以创建包含 500 个槽的
ds
预留,并将所有相关的 Google Cloud 项目分配到ds
预留。 - 您可以创建包含 300 个槽的
elt
预留,并将用于 ELT 工作负载的项目分配到elt
预留。 - 您可以创建包含 200 个槽的
bi
预留,并将与 BI 工具关联的项目分配到bi
预留。
您可以选择为各个团队或部门创建预留,而不是跨工作负载划分容量。
管理不同地区中的预留
预留是区域级资源。在一个区域购买的槽和创建的预留不能在其他任何区域中使用。项目、文件夹和组织都可以分配到一个地区中的预留,还可在其他地区以按需结算的方式运行。为了管理其他区域中的预留,您必须在 BigQuery 容量管理页面中更改区域:
- 在 BigQuery 控制台中,点击预留。
- 点击位置选择器,然后选择您要管理预留的区域。
- 选择地区后,您可以购买槽、创建预留以及将项目分配到预留。
适用于复杂组织的 BigQuery Reservations 预留
BigQuery Reservations 预留是一种组织范围的资源。 您可集中购买预留以便在整个组织中使用。您可以要求各个部门或分部管理其自己的 BigQuery Reservations 预留,购买承诺的容量并在整个部门或分部内分配该容量。管理项目将与一个 Cloud Billing 账号关联,并且将由该账号为容量付费。
您可以为您的每个部门或分部使用独特的 Google Cloud 组织。在这种情况下,您为每个组织定义管理项目,并从管理项目中管理该组织的 BigQuery Reservations 预留。组织之间不会共享承诺或闲置的容量。
空闲槽和未分配的槽仅会在同一管理项目内以及同一版本中创建的预留之间共享。如果您使用多个管理项目,则不会在不同管理项目的多个预留之间共享槽。