购买和管理旧版槽用量承诺

通过 BigQuery Reservation API,您可以购买专用槽(称为承诺)、创建槽池(称为预留),以及将项目、文件夹和组织分配给这些预留。

容量承诺是在一段最短的时间内购买的 BigQuery 计算容量。创建某个版本的预留时,购买容量承诺是可选操作,但可以节省费用。

承诺使用合约属于区域性资源。在一个单区域或多区域购买的承诺无法在任何其他单区域或多区域使用。承诺无法在单地区之间或单地区与多地区之间移动。

启用 Reservations API

BigQuery Reservations API 与现有的 BigQuery API 不同,必须单独启用。如需了解详情,请参阅启用和停用 API

  • API 的名称为“BigQuery Reservations API”
  • BigQuery Reservations API 的端点为 bigqueryreservation.googleapis.com

启用 API。

购买槽

如需将容量预留一段最短的时间,您可以购买容量承诺。这可以享受折扣并节省费用。如需详细了解具体费用,请参阅 BigQuery 价格

所需权限

如需创建容量承诺,您需要以下 Identity and Access Management (IAM) 权限:

  • 对维持承诺所有权的管理项目拥有 bigquery.capacityCommitments.create 权限。

以下每个预定义的 IAM 角色都具有此权限:

  • BigQuery Admin
  • BigQuery Resource Admin

如需详细了解 BigQuery 中的 IAM 角色,请参阅预定义的角色和权限

创建容量承诺

承诺使用合约属于区域性资源。在一个单区域或多区域购买的承诺无法在任何其他单区域或多区域使用。 承诺无法在单区域之间或单区域与多区域之间移动。

控制台

  1. 在 Google Cloud 控制台中,转到 BigQuery 页面。

    转到 BigQuery

  2. 在导航面板中,转到容量管理部分。

  3. 点击创建承诺

  4. 配置下:

    1. 选择该地点。
    2. 容量模型部分中,选择容量模型。
    3. 选择承诺期限,它指定了您的承诺方案
    4. 如果您要购买年度承诺,请选择您希望在承诺到期时生效的续订方案 (Renewal plan that you want to take effect):

      1. 不续订并转换为月度承诺(默认)。年度承诺到期后,将转换为月度承诺。
      2. 每年续订。年度承诺到期后,将作为年度承诺再续订一年。
      3. 不续订并转换为灵活槽。年度承诺到期后,将转换为灵活槽承诺。

      如需了解详情,请参阅承诺

    5. 输入要购买的槽数

    6. 点击下一步

  5. 检查购买的估算费用

  6. 确认并提交下:

    1. 输入 CONFIRM 以确认购买。
    2. 点击购买以购买槽。
  7. 如需查看承诺,请点击查看槽用量承诺。预配了容量之后,申请的容量承诺将变为绿色状态。

    槽承诺。

首次购买容量时,系统会创建“default”预留。

SQL

如需创建容量承诺,请使用 CREATE CAPACITY DDL 语句

  1. 在 Google Cloud 控制台中,转到 BigQuery 页面。

    转到 BigQuery

  2. 在查询编辑器中,输入以下语句:

    CREATE CAPACITY
      `ADMIN_PROJECT_ID.region-LOCATION.COMMITMENT_ID`
    OPTIONS (
      slot_count = NUMBER_OF_SLOTS,
      plan = 'PLAN_TYPE');

    请替换以下内容:

    • ADMIN_PROJECT_ID:保持此承诺所有权的管理项目的项目 ID
    • LOCATION:承诺的位置
    • COMMITMENT_ID:承诺的 ID

      每个项目和位置的该字段必须唯一。该字段必须以小写字母或数字开头和结尾,并且只能包含小写字母、数字和短划线。

    • NUMBER_OF_SLOTS:要购买的槽数
    • PLAN_TYPE方案类型,例如 FLEXMONTHLYANNUAL

  3. 点击 运行

如需详细了解如何运行查询,请参阅运行交互式查询

bq

使用带有 --capacity_commitment 标志bq mk 命令购买槽。

bq mk \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --capacity_commitment=true \
    --plan=PLAN_TYPE \
    --slots=NUMBER_OF_SLOTS

替换以下内容:

  • ADMIN_PROJECT_ID:将保持此承诺所有权的管理项目的项目 ID。
  • LOCATION:承诺的位置
  • PLAN_TYPE方案类型,例如 FLEXMONTHLYANNUAL
  • NUMBER_OF_SLOTS:要购买的槽数。

查看容量承诺

所需权限

如需查看承诺,您需要以下 Identity and Access Management (IAM) 权限:

  • 对维持承诺所有权的管理项目拥有 bigquery.capacityCommitments.list 权限。

以下每个预定义的 IAM 角色都具有此权限:

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor
  • BigQuery Resource Viewer
  • BigQuery User

如需详细了解 BigQuery 中的 IAM 角色,请参阅预定义的角色和权限

按项目查看容量承诺

要按项目查看容量承诺,请执行以下操作:

控制台

  1. 在 Google Cloud 控制台中,转到 BigQuery 页面。

    转到 BigQuery

  2. 在导航面板中,转到容量管理部分。

  3. 点击槽承诺 (Slot commitments) 标签页。 您的容量承诺列在承诺下的表格中。

    槽承诺。

SQL

如需查看管理项目的承诺,请查询 INFORMATION_SCHEMA.CAPACITY_COMMITMENTS_BY_PROJECT 视图

  1. 在 Google Cloud 控制台中,转到 BigQuery 页面。

    转到 BigQuery

  2. 在查询编辑器中,输入以下语句:

    SELECT
      capacity_commitment_id
    FROM
      `region-LOCATION`.INFORMATION_SCHEMA.CAPACITY_COMMITMENTS_BY_PROJECT
    WHERE
      project_id = 'ADMIN_PROJECT_ID'
      AND slot_count = 100;

    请替换以下内容:

  3. 点击 运行

如需详细了解如何运行查询,请参阅运行交互式查询

bq

使用带有 --capacity_commitment 标志bq ls 命令列出管理项目的承诺。

bq ls \
    --capacity_commitment=true \
    --location=LOCATION \
    --project_id=ADMIN_PROJECT_ID

请替换以下内容:

更新容量承诺

您可以对容量承诺进行以下更新:

  • 续订现有承诺。
  • 将承诺转换为期限更长的承诺方案。
  • 将一个承诺拆分为两个承诺。
  • 将两个承诺合并为一个承诺。

所需权限

如需更新容量承诺,您需要以下 Identity and Access Management (IAM) 权限:

  • 对维持承诺所有权的管理项目拥有 bigquery.capacityCommitments.update 权限。

以下每个预定义的 IAM 角色都具有此权限:

  • BigQuery Admin
  • BigQuery Resource Admin

如需详细了解 BigQuery 中的 IAM 角色,请参阅预定义的角色和权限

续订承诺

年度承诺具有续订方案,您可以在创建年度承诺或转换为年度承诺时指定该方案。您可以在承诺结束日期之前随时更改年度承诺的续订方案

控制台

您可以按以下方式更改年度承诺的续订方案:

  1. 在 Google Cloud 控制台中,转到 BigQuery 页面。

    转到 BigQuery

  2. 在导航面板中,转到容量管理部分。

  3. 点击槽承诺 (Slot commitments) 标签页。

  4. 找到要修改的承诺。

  5. 点击 操作,然后选择修改续订方案选项。

  6. 选择新的续订方案。

bq

如需更改年度承诺的续订方案,请使用带有 --capacity_commitment 标志--renewal_plan 标志bq update 命令

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --renewal_plan=PLAN_TYPE \
    --capacity_commitment=true \
    COMMITMENT_ID

替换以下内容:

将承诺使用合约转换为较长的持续时间

您可以随时选择将承诺转换为期限较长的承诺类型。

  • 可将灵活槽承诺转换为月度承诺或年度承诺。
  • 可将月度承诺转换为年度承诺。

在您更新承诺使用合约后,系统会立即向您收取与新方案关联的费率,并重置结束日期。

如需转换承诺,请使用带有 --plan 标志bq update 命令

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --plan=PLAN_TYPE \
    --renewal_plan=RENEWAL_PLAN \
    --capacity_commitment=true \
    COMMITMENT_ID

替换以下内容:

  • ADMIN_PROJECT_ID:项目 ID
  • LOCATION:承诺的位置
  • PLAN_TYPE方案类型,例如 FLEXMONTHLYANNUAL
  • RENEWAL_PLAN续订方案

    这仅在 PLAN_TYPEANNUAL 时适用。如果 PLAN_TYPEMONTHLY,请省略此标志。

  • COMMITMENT_ID:承诺的 ID

    如需获取 ID,请参阅 查看已购买的承诺

拆分承诺使用合约

您可以将您的承诺拆分为两个承诺。如果您想续订承诺的一部分,此选项会非常有用。例如,如果您有一个包含 1000 个槽的年度承诺,则可以将 300 个槽拆分到新的承诺中,将 700 个槽留在原始承诺中。然后,您可以按年费率续订 700 个槽,在结束日期后将 300 个槽转换为灵活槽。

当您拆分承诺时,新承诺的方案和承诺结束日期与原始承诺相同。

控制台

  1. 在 Google Cloud 控制台中,转到 BigQuery 页面。

    转到 BigQuery

  2. 在导航面板中,转到容量管理部分。

  3. 点击槽承诺 (Slot commitments) 标签页。

  4. 选择您要拆分的承诺。

  5. 点击拆分

  6. 拆分承诺页面中,使用配置拆分滑块选择每个分片的槽数(以 100 个槽为增量)。

  7. 点击拆分以拆分承诺。槽用量承诺标签页中将列出新的承诺。

bq

如需拆分承诺,请使用 bq update 命令。

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --split \
    --slots=SLOTS_TO_SPLIT \
    --capacity_commitment=true \
    COMMITMENT_ID

替换以下内容:

  • ADMIN_PROJECT_ID:项目 ID
  • LOCATION:承诺的位置
  • SLOTS_TO_SPLIT:从原始承诺使用合约拆分到新承诺使用合约的槽数
  • COMMITMENT_ID:承诺的 ID

    如需获取 ID,请参阅 查看已购买的承诺

合并两个承诺使用合约

您可以将多项承诺合并为一项承诺。合并承诺必须全部属于相同类型(FLEXMONTHLYANNUALTHREE_YEAR)。合并承诺的结束日期就是原始承诺的结束日期上限。如果任何承诺有更早的结束日期,那么这些承诺将延期至较晚的那个日期,这些承诺中的槽将按比例收费。

控制台

  1. 在 Google Cloud 控制台中,转到 BigQuery 页面。

    转到 BigQuery

  2. 在导航面板中,转到容量管理部分。

  3. 点击槽承诺 (Slot commitments) 标签页。

  4. 选择您要合并的承诺。

  5. 点击 Merge

  6. Merge commitments 页面中,查看合并详情,然后点击合并槽用量承诺标签页中将列出新的合并后承诺。

bq

如需将两个承诺使用合约合并为一个承诺使用合约,请使用 bq update 命令:

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --merge=true \
    --capacity_commitment=true \
    COMMITMENT1,COMMITMENT2

替换以下内容:

  • ADMIN_PROJECT_ID:项目 ID
  • LOCATION:承诺的位置
  • COMMITMENT1:第一个合并承诺
  • COMMITMENT2:要合并的第二个承诺使用合约

删除承诺

如果容量承诺的结束日期为过去的时间,可以删除该容量承诺。Google Cloud 控制台中会显示承诺结束日期。在删除承诺之前,请确保有足够的未分配的槽。否则,您必须减少预留中的槽数,或完全删除预留。

所需权限

要删除容量承诺,您需要以下 Identity and Access Management (IAM) 权限:

  • 对维持承诺所有权的管理项目拥有 bigquery.capacityCommitments.delete 权限。

以下每个预定义的 IAM 角色都具有此权限:

  • BigQuery Admin
  • BigQuery Resource Admin

如需详细了解 BigQuery 中的 IAM 角色,请参阅预定义的角色和权限

删除容量承诺

控制台

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

  1. 在 Google Cloud 控制台中,转到 BigQuery 页面。

    转到 BigQuery

  2. 在导航面板中,转到容量管理部分。

  3. 点击槽承诺 (Slot commitments) 标签页。

  4. 位置下拉列表中,选择相应的位置。

  5. 找到要删除的承诺。

  6. 展开 操作选项。

  7. 点击删除

  8. 输入“REMOVE”并点击继续按钮。

SQL

如需删除容量承诺,请使用 DROP CAPACITY DDL 语句

  1. 在 Google Cloud 控制台中,转到 BigQuery 页面。

    转到 BigQuery

  2. 在查询编辑器中,输入以下语句:

    DROP CAPACITY
      `ADMIN_PROJECT_ID.region-LOCATION.COMMITMENT_ID`;

    替换以下内容:

    • ADMIN_PROJECT_ID:拥有承诺的项目
    • LOCATION:承诺的位置
    • COMMITMENT_ID:承诺的 ID

      如需获取 ID,请参阅 查看已购买的承诺

  3. 点击 运行

如需详细了解如何运行查询,请参阅运行交互式查询

bq

如需删除容量承诺,请使用带有 --capacity_commitment 标志的 bq rm 命令:

bq rm \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --capacity_commitment=true \
    COMMITMENT_ID

替换以下内容:

  • ADMIN_PROJECT_ID:项目 ID
  • LOCATION:承诺的位置
  • COMMITMENT_ID:要删除的承诺的 ID

    如需获取 ID,请参阅 查看已购买的承诺

排查容量承诺问题

本部分介绍了在使用 BigQuery 预留时遇到问题的情况下可能会有帮助的问题排查步骤。

已购买的槽待处理

槽受到可用容量的限制。在您购买槽用量承诺并且 BigQuery 分配承诺后,状态列会显示对勾标记。如果 BigQuery 无法立即分配请求的槽,则状态列会保持待处理状态。您可能需要等待几小时才能使用这些槽。如果您需要更快地访问槽,请尝试以下操作:

  1. 删除待处理的承诺。
  2. 购买数量更少的槽的新承诺。规模较小的承诺可能会立即生效,具体取决于容量。
  3. 以单独的承诺购买其余的槽。这些槽可能会在状态列中显示为待处理,但通常在几个小时内变为有效。
  4. 可选:当两个承诺都可用时,只要您为它们购买同一方案,就可以合并它们。

如果槽承诺失败或需要很长时间才能完成,请考虑暂时使用按需价格。如果使用此解决方案,您可能需要在未分配给任何预留的其他项目上运行关键型查询,或者您可能需要完全移除项目分配。