使用 Reservations 管理工作负载

提供按需结算和固定费率结算模式供选择

您可以在任何时间选择切换按需结算或固定费率结算模式,或者还可以选择混搭使用这两种模式。这两种价格模式互为补充。按需结算模式更高效,而固定费率可预测性更好。

预留权衡。

选择固定费率时,请考虑以下因素:

  • 费用。Google 建议您的每月分析支出应在最低 BigQuery 固定费率承诺(目前为每月 500 个槽)的范围。
  • 效率。如果您看重成本效率,请考虑使用按需使用,这样可以按查询量付费。
  • 可预测性。如果您看重每月费用的可预测性,则可以首选固定费率结算模式,因为每月只需支付一笔固定的费用。
  • 资源。固定费率和按需结算模式在提供多少容量方面存在差异。如需了解详情,请参阅估算要购买的槽数

预留决策。

作为新客户,建议您先选择固定费率。您可以随时查看如果选择按需结算会产生多少费用,并可以随时切换适合您的模式。

您还可以选择混搭使用按需和固定费率结算模式:

  • 对于定期数据处理和 ELT 等可预测的工作负载使用按需结算。
  • 对于临时分析和数据科学工作负载使用固定费率结算。

估算要购买的槽数

BigQuery 的架构支持以更多的资源进行线性扩缩。根据工作负载的实际情况,增加容量可能会为您带来更多益处。因此,要购买的最佳槽数取决于您的性能、吞吐量和使用偏好。

如需确定应购买的槽的最佳数量,您应考量项目当前使用的槽数以及您每月希望支付的费用。按需结算工作负载目前存在 2000 个槽的软上限,但重要的是使用 Stackdriver Logging、Jobs API 或 BigQuery 审核日志检查您的项目目前实际使用了多少个槽。如需了解详情,请参阅直观显示可用的槽和分配的槽

槽使用时间表。

BigQuery Reservations 使用入门

如需开始使用 BigQuery Reservations,请完成 BigQuery 快速入门并选择您的管理项目

然后,您必须购买槽将您的组织分配到预留。如果您不完成这两个步骤,系统将仍按按需结算费率向您的组织收费。

购买槽

Console

  1. 在 Google Cloud Console 中,转到 BigQuery 网页界面。

    转到 BigQuery 网页界面

  2. 在导航面板中,转至预留部分。“预留”导航按钮。
  3. 点击购买槽按钮。购买槽。
  4. 选择“Monthly”作为承诺持续期。选择每月。
  5. 为位置选择“US”。
  6. 为槽数输入 500
  7. 输入“CONFIRM”查看并确认您的订单,然后选择“PURCHASE”。输入确认。
  8. 等待几分钟让系统完成容量预配。预配了容量之后,申请的容量承诺将变为绿色状态。槽承诺。

首次购买容量时,系统会创建“default”预留。下一步是将您的组织分配到预留。

将组织分配到预留

Console

  1. 在 Google Cloud Console 中,转到 BigQuery 网页界面。

    转到 BigQuery 网页界面

  2. 点击预留部分。“预留”导航按钮。
  3. 点击分配标签页。“分配”标签页。
  4. 搜索和创建分配部分中,点击浏览按钮并选择您的组织。分配项目选择器。
  5. 预留选择器中,选择以“default.”结尾的预留名称 分配预留选择器。
  6. 点击创建

CLI

使用带有 --reservation_assignment 标记的 bq mk 命令为组织的预留分配查询作业。

bq mk \
  --project_id=admin_project_id \
  --location=US \
  --reservation_assignment \
  --reservation_id=admin_project_id:US.default \
  --job_type=QUERY \
  --assignee_id=organization_id \
  --assignee_type=ORGANIZATION

其中:

  • admin_project_id 是预留资源的所有者项目。

  • organization_id 是您的组织 ID。

使用专用槽创建其他预留

将组织分配到预留时,所有使用 BigQuery 的项目都会公平地共享这些槽。根据工作负载的实际情况,与其他工作负载共享槽可能并不理想。例如,生产工作负载可能不希望与测试工作负载平均地共享槽。如果某个项目需要专用槽,则可以另行创建预留并为其分配自己的预留槽。以下部分介绍了为 my-prod-project 创建并分配 500 个槽的示例。

创建 prod 预留

Console

  1. 在 Google Cloud Console 中,转到 BigQuery 网页界面。

    转到 BigQuery 网页界面

  2. 点击预留部分。
  3. 点击创建预留按钮。 创建预留。
  4. 预留名称字段中,输入 prod创建预留信息。
  5. 位置字段中,选择 US
  6. 对于槽数,请输入 500
  7. 点击保存

概览表格中会显示新创建的 prod 预留。

预留概览。

CLI

使用带有 --reservation 标记的 bq mk 命令可创建包含 500 个槽的预留。

bq mk \
  --project_id=admin_project_id \
  --location=US \
  --reservation \
  --slots=500 \
  prod

其中:

  • admin_project_id 是预留资源的所有者项目 ID。

将 my-prod-projec 分配到 prod 预留

Console

  1. 在 Google Cloud Console 中,转到 BigQuery 网页界面。

    转到 BigQuery 网页界面

  2. 点击预留部分。
  3. 点击分配标签页。“分配”标签页。
  4. 搜索和创建分配部分中,点击浏览按钮,然后选择您的 prod 项目。分配项目选择器。
  5. 预留选择器中,选择以“prod.”结尾的预留名称 分配预留选择器。
  6. 点击创建

CLI

使用带有 --reservation_assignment 标记的 bq mk 命令可将生产项目的查询作业分配给 prod 预留。

bq mk \
  --project_id=admin_project_id \
  --location=US \
  --reservation_assignment \
  --reservation_id=admin_project_id:US.prod \
  --job_type=QUERY \
  --assignee_id=my-prod-project \
  --assignee_type=PROJECT

其中:

  • admin_project_id 是预留资源的所有者项目 ID。

  • my-prod-project 是您的生产项目 ID。

现在,任何从 my-prod-project 提交的查询作业将在 prod 预留下运行,并可使用 500 个槽。

购买更多槽并增加预留大小

随着工作负载的大小和复杂性随时间增加,您可能会发现有必要购买更多槽来提高性能。

购买更多槽

按照 BigQuery Reservations 使用入门中的说明再购买 500 个槽。

增加 prod 预留大小

如需增加 prod 预留的大小,请完成以下步骤。

Console

  1. 在 Google Cloud Console 中,转到 BigQuery 网页界面。

    转到 BigQuery 网页界面

  2. 点击预留部分。预留部分。
  3. 选择之前创建的“prod”预留并点击修改按钮。预留修改。
  4. 输入新的预留大小:1000 个槽。增加预留槽数。
  5. 点击保存
  6. 更新后的 prod 预留大小会显示在预留列表中。预留大小已更新。

CLI

使用带有 --reservation 标记的 bq update 命令可更新生产预留的大小。

bq update \
  --project_id=admin_project_id \
  --location=US \
  --slots=500 \
  --reservation prod

其中:

  • admin_project_id 是预留资源的所有者项目 ID。

将项目/文件夹/组织分配到预留

项目、文件夹和组织都可以分配到预留。项目预留分配优先级高于文件夹分配,而文件夹分配优先级高于组织分配。

管理不同区域中的预留

预留是区域级资源。在一个区域购买的槽和创建的预留不能在其他任何区域中使用。项目、文件夹和组织都可以分配到一个区域中的预留,还可在其他区域以按需结算的方式运行。为了管理其他区域中的预留,您必须在 BigQuery Reservations 页面中更改区域。

Console

  1. 点击 BigQuery 控制台界面中的预留部分。
  2. 点击位置选择器,选择您要在其中管理预留的区域。选择另一区域。
  3. 选择区域后,您可以购买槽创建预留以及将项目分配到预留

将加载和导出作业分配到预留

加载和其他流水线作业使用的槽是免费的,并遵循尽力而为的原则处理作业。BigQuery 并不保证提取容量。如果您需要专用资源来进行加载或获得较稳定的性能,则可以购买槽并创建专用于加载和其他流水线作业的预留。

以下示例展示了如何将 my-project 的流水线作业分配到管理项目的负载预留。

CLI

使用带有 --reservation 标记的 bq mk 命令可创建 1000 个用于流水线作业的预留。

bq mk \
  --project_id=admin_project_id \
  --location=US \
  --ignore_idle_slots=true \
  --slots=1000 \
  --reservation my-pipeline

其中:

  • admin_project_id 是预留资源的所有者项目 ID。

使用带有 --reservation_assignment 标记的 bq mk 命令可将项目的流水线作业分配给流水线预留。

bq mk \
  --project_id=my-project \
  --location=US \
  --reservation_assignment \
  --reservation_id=admin_project_id:US.loads \
  --assignee_id=admin_project_id \
  --assignee_type=PROJECT \
  --job_type=PIPELINE

其中:

  • my-project 是您希望将其流水线作业分配给预留的项目 ID。

  • admin_project_id 是预留资源的所有者项目 ID。

从预留中移除项目

如需将项目从预留中移除,您可以移除预留分配。如果项目未分配到任何预留,则会使用按查询付费(按需结算)价格并相应地支付费用。如果项目的父级文件夹或组织被分配到了预留,则此项目不使用按需结算。

如需从预留中移除项目,请执行以下操作:

Console

  1. 在 Google Cloud Console 中,转到 BigQuery 网页界面。

    转到 BigQuery 网页界面

  2. 点击预留部分。
  3. 点击分配标签页。“分配”标签页。
  4. 对于您要删除的分配,请点击操作,然后点击删除。删除分配。

CLI

使用带有 --reservation_assignment 标记的 bq rm 命令可将您的项目从预留中移除。

bq rm \
  --project_id=admin_project_id \
  --location=US \
  --reservation_assignment admin_project_id:US.reservation_id.reservation_assignment_id

其中:

  • admin_project_id 是预留资源的所有者项目 ID。

  • reservation_assignment_id 是预留分配的 ID。

查找项目的预留分配

如需了解您的项目、文件夹或组织是否已分配到预留,您可以执行以下操作:

Console

  1. 在 Google Cloud Console 中,转到 BigQuery 网页界面。

    转到 BigQuery 网页界面

  2. 点击预留部分。
  3. 点击分配标签页。“分配”标签页。
  4. 点击项目选择器并选择所需项目、文件夹或组织。分配项目选择器。
  5. 如果已存在预留分配,它将显示在选择器下方。

CLI

使用带有 --reservation_assignment 标记的 bq show 命令可查找项目的查询作业所分配到的预留。

bq show \
  --project_id=admin_project_id \
  --location=US \
  --reservation_assignment \
  --job_type=QUERY \
  --assignee_id=my-prod-project \
  --assignee_type=PROJECT

其中:

  • admin_project_id 是预留资源的所有者项目 ID。

  • my-prod-project 是您的生产项目 ID。

删除容量承诺

容量承诺是否可以删除取决于其承诺持续时间:

  • 按月:在前 30 天过后,您可以随时删除您的承诺。剩余时间的帐单将按比例以秒计费。
  • 按年:一年以后,您可以选择不为您的槽池续期。目前,您的槽池将转为按月收费,随时可以取消,并且剩余时间的帐单将按比例以秒计费。

承诺结束日期会显示在“预留”界面中。您可以在承诺日期之后删除您的容量承诺。如果要删除容量承诺,您必须首先确保有足够多未分配的槽。否则,您必须减少预留中的槽数,或完全删除预留。

Console

要删除容量承诺,请完成以下步骤:

  1. 在 Google Cloud Console 中,转到 BigQuery 网页界面。

    转到 BigQuery 网页界面

  2. 点击预留部分。
  3. 点击槽承诺 (Slot commitments) 标签页。
  4. 对于您要删除的承诺,点击操作,然后点击删除。删除承诺。
  5. 输入“REMOVE”并点击继续按钮。删除承诺。

CLI

使用带有 --capacity_commitment 标记的 bq rm 命令可删除容量承诺。

bq rm \
  --project_id=admin_project_id \
  --location=US \
  --capacity_commitment=admin_project_id:US.capacity_commitment_id

其中:

  • admin_project_id 是预留资源的所有者项目 ID。

  • capacity_commitment_id 是容量承诺 ID。

使用预留管理工作负载和部门

您可以使用 BigQuery Reservations 预留功能来隔离您针对各种工作负载、团队或部门的承诺容量,具体方法是创建更多预留并将项目分配到这些预留。预留是一个独立的资源库,它具备一项额外的优势,即可以利用整个组织的闲置容量。

例如,假设您拥有 1000 个槽的总承诺容量和 3 种工作负载类型:数据科学、ELT 和 BI。

  • 您可以创建包含 500 个槽的 ds 预留,并将所有相关的 Google Cloud 项目分配到 预留。
  • 您可以创建包含 300 个槽的 elt 预留,并将用于 ELT 工作负载的项目分配到 预留。
  • 您可以创建包含 200 个槽的 bi 预留,并将与 BI 工具关联的项目分配到 预留。

删除承诺。

您可以选择为各个团队或部门创建预留,而不是跨工作负载划分容量。

适用于复杂组织的 BigQuery Reservations 预留

BigQuery Reservations 预留是一种组织范围的资源。您集中购买承诺的容量,以便在整个组织内使用。您可以要求各个部门或分部自行管理 BigQuery Reservations 预留,购买承诺的容量,在整个部门范围或分部内分配该容量,并为此容量付费。

您可以为您的每个部门或分部使用独特的 Google Cloud 组织。在这种情况下,您为每个组织定义管理项目,并从管理项目中管理该组织的 BigQuery Reservations 预留。不同组织之间不会共享承诺或闲置的容量。

结合使用固定费率和按需结算模式

您可以结合使用固定费率和按需结算模式。

您可以在一个地区使用固定费率,在另一个地区使用按需结算:

  1. 默认情况下,所有区域中的使用都采用按需结算。
  2. 通过将项目、文件夹或组织分配到预留,您可以在区域中采用固定费率结算。
  3. 例如,如果您在美国多区域购买了槽承诺并为您的组织分配了默认预留,则您的组织将在美国多区域中按固定费率结算,而在所有其他区域中仍按需结算。

在同一区域内,您可以同时使用固定费率和按需结算:

  1. 请勿将您的文件夹或组织分配到预留,
  2. 而是明确地将项目分配到预留。
  3. 任何未指定给预留的项目都仍会按需结算。例如:
    • 如果您有项目 A,B 和 C
    • 您不创建组织级的分配
    • 您明确将项目 A 和 B 分配到预留
    • C 项目仍会按需结算

任何采用按需结算方式的项目所使用的容量都独立于您承诺的容量。这些项目不会影响您承诺的容量的可用性。