使用 Reservations 管理工作负载

beta product

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

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

Reservations 权衡因素。

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

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

Reservations 决策。

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

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

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

估算要购买的槽数

BigQuery 的架构可以随着资源的增加而线性扩容。增加容量可能会为您带来更多益处,具体取决于工作负载的实际情况。因此,您应根据性能、吞吐量和实用程序偏好设置来选择最佳的槽购买数量。

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

槽使用时间表。

BigQuery Reservations 使用入门

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

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

购买槽

控制台

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

    转到 BigQuery 网页界面

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

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

将组织分配到预留

控制台

  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 预留

控制台

  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 预留

控制台

  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 预留的大小,请完成以下步骤。

控制台

  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 页面中更改区域:

控制台

  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。

从预留中移除项目

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

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

控制台

  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。

查找项目的预留分配

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

控制台

  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 天过后,您可以随时删除您的承诺。之后,您的帐单将转为按比例以秒计费。
  • 包年:一年以后,您可以选择不为您的槽池续期。 这时,您的槽池将转为按月计费。您可以随时取消这种模式,将您的帐单转为按比例以秒计费。

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

控制台

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

  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 项目分配到 ds 预留。
  • 您可以创建包含 300 个槽的 elt 预留,并将用于 ELT 工作负载的项目分配到 elt 预留。
  • 您可以创建包含 200 个槽的 bi 预留,并将与 BI 工具关联的项目分配到 bi 预留。

删除承诺。

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

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

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

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

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

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

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

  1. 在所有区域中,默认的结算模式都是按需结算。
  2. 如需在某一区域中为项目、文件夹或组织选择固定费率结算模式,为该项目、文件夹或组织分配预留即可。
  3. 例如,如果您在美国多区域购买了槽承诺并为您的组织分配了默认预留,则您的组织将在美国多区域采用固定费率结算模式,而在其他所有区域仍采用按需结算模式。

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

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

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