工作负载管理简介
BigQuery 工作负载管理可让您控制组织中可用于数据分析的资源和功能,以及指定结算模式。您可以通过预留和承诺的形式购买 BigQuery 计算容量(以槽为单位衡量),然后在整个组织中分配预留和承诺,以执行作业。
BigQuery 提供了两种数据分析(也称为“计算”)工作负载管理模式。使用按需结算时,您需要按查询数据时处理的字节数付费。使用基于容量的结算时,您可以为工作负载预留处理容量,并可以选择自动扩缩容量。
您可以随时切换按需结算和基于容量的结算模式,也可以选择组合使用这两种模式。基于容量的价格模式可让您明确控制槽和处理容量,而按需价格模式则无法做到。
以下模式定义了工作负载的管理方式和结算方式:
基于容量的价格:以折扣价购买专用或自动扩缩查询处理容量。容量以槽为单位衡量,您将槽分配给工作负载或组织的各个部门。基于容量的结算提供承诺选项,您需要承诺在 1 年或 3 年内使用一定的处理容量,以换取折扣价。使用基于容量的模式时,不会收取处理的字节数费用。基于容量的价格的优势包括:
- 费用。 最佳做法是将每月最低分析用量设置为基于 BigQuery 容量的承诺,以降低费用。
- 可预测性。基于容量的槽可确保更一致的每月费用。
- 集中式购买:您可以为整个组织(而不是使用 BigQuery 的每个项目)购买和分配槽。
- 灵活性。您可以选择要分配给工作负载的容量,也可以让 BigQuery 根据您的工作负载要求自动扩缩容量。按每秒增量计费,最短使用期为一分钟。
使用利用 BigQuery 版本的预留时,创建容量承诺是可选的,但可以节省稳定状态工作负载的费用。
您可以结合使用多种结算模式。例如,您可以运行一些采用按需价格的工作负载,再搭配使用一些采用基于容量的价格的工作负载。由于结算模型是按项目指定的,因此这需要将多个项目用于查询作业。 如需更好地了解 BigQuery 预留价格,请参阅以下内容:
槽
BigQuery 中的处理容量以“槽”为单位衡量。槽表示用于查询数据的虚拟 CPU。通常,可用的槽越多,您可以运行的并发查询就越多,并且复杂查询可以运行得更快。使用基于容量的价格模式,您可以预留一定数量的槽。查询会在该容量内运行,并且在部署该容量后需要为其持续支付费用。例如,如果您购买 2,000 个 BigQuery 槽,则在任何给定时间,查询总共只能使用 2,000 个虚拟 CPU。在删除之前,您拥有 2,000 个槽的容量,并需要为其付费。
如需详细了解槽及其使用方式,请参阅了解槽。
槽配额
槽配额可为 BigQuery 提供安全保障。配额类型取决于槽的价格模式:
按需价格模式:具有临时爆发功能的每个项目槽配额能够满足大多数用户的需求。根据工作负载的情况,可用的槽越多,查询性能也就越高。如需查看您的账号使用的槽数,请参阅 BigQuery 监控。
基于容量的价格模式:预留配额和限制定义了您可以在一个位置购买的槽数上限。您只需为预留和承诺付费,无需为配额付费。
如需了解如何增加槽配额,请参阅申请增加配额。
求职招聘
作业是 BigQuery 代表您执行的操作,包括加载数据、导出数据、查询数据或复制数据。
当您使用 Google Cloud 控制台或 bq 工具执行其中一个作业时,系统会自动创建、安排并运行作业资源。您还可以通过编程方式创建加载作业、导出作业、查询作业或复制作业。以编程方式创建作业后,BigQuery 会为您安排并运行此作业。
由于作业可能需要很长时间才能完成,它们会异步运行,其状态可以轮询。用时较短的操作(例如列出资源或获取元数据)不由作业资源管理。
如需详细了解 BigQuery,请参阅了解作业。
预留
槽在称为预留的池中购买、分配到资源和分配给作业。使用预留,您可以按照适合组织的方式分配槽。例如,您可以为生产工作负载创建名为 prod
的预留,并为测试创建另一个名为 test
的预留,以使测试作业不会与生产工作负载争用资源。或者,您可以为组织的不同部门创建预留。
如果您在创建预留之前购买槽承诺,为方便起见,系统会自动创建名为 default
的预留。default
预留没有任何特殊行为。您可以根据需要创建其他预留,也可以使用默认预留。
预留限制
- 您创建的预留不会与其他组织共享。
- 您必须为每个组织创建一个单独的预留和一个单独的管理项目。
- 每个组织在单个位置最多可以有 10 个具有有效承诺的管理项目。
- 空闲容量无法在组织之间或单个组织内的不同管理项目之间共享。
- 承诺和预留属于区域级资源。在一个区域或多区域购买的承诺无法用于任何其他区域或多区域的预留,即使单区域位置包含在多区域位置也是如此。例如,您无法将在
EU
多区域购买的承诺用于europe-west1
中的预留。 - 承诺和预留无法从一个区域或多区域移动到另一个区域或多区域。
- 在一个管理项目中购买的承诺无法转移到另一个管理项目。
- 使用一个版本购买的承诺使用合约不能与其他版本的预留一起使用。
- 不同版本的预留之间不共享空闲槽。
- 自动扩缩的槽不可共享,因为它们不再需要时,它们会缩减。
预留分配
如要使用购买的槽,您必须将一个或多个项目、文件夹或组织分配给预留。预留是您可以指定槽分配的最低级层。当项目中的作业运行时,它会使用其分配预留中的槽。资源可以继承资源层次结构中其父级的分配。如果项目未分配到预留,它会继承父文件夹或组织的分配(如有)。
项目会使用它们所分配到的资源层次结构中最具体的单个预留。文件夹分配会覆盖组织分配,而项目分配会覆盖文件夹分配。
如果项目没有已分配或继承的预留,则作业将使用按需价格。如需详细了解资源层次结构,请参阅整理 BigQuery 资源。
资源可以分配给 None
,表示缺少分配。分配给 None
的项目始终使用按需价格模式。None
分配常见的应用场景是将某个组织分配给预留,然后使用 None
从预留中排除某些项目或文件夹。如需了解详情,请参阅将项目分配给 None
。
创建分配时,请为该分配指定作业类型:
BACKGROUND
:当您选择使用您自己的预留运行 BigQuery 搜索索引管理作业、BigQuery 变更数据捕获 (CDC) 或 BigLake 元数据缓存后台作业时,请使用此预留。在通过 Datastream 的后台应用操作将来源数据库复制到 BigQuery 时,也需要使用此预留。标准版中不提供BACKGROUND
预留。ML_EXTERNAL
:此预留用于使用 BigQuery 外部服务的 BigQuery ML CREATE MODEL 查询。如需了解详情,请参阅为 BigQuery ML 工作负载分配槽。标准版不提供ML_EXTERNAL
预留。PIPELINE
:将此预留用于加载和提取作业。默认情况下,加载和提取作业是免费的,并可使用槽的共享池。BigQuery 并不保证此共享池的容量可用性,也不保证您能实现的吞吐量。如果您要加载大量数据,则作业可能需要等待槽变为可用。在这种情况下,您可能需要购买专用槽并为其分配
PIPELINE
作业。最佳实践是另外创建一个专用预留,并启用忽略空闲槽。如需详细了解空闲槽,请参阅空闲槽。将加载和提取作业分配给预留后,它们将失去对免费池的访问权限。您应该监控资源利用率和作业数量,以确保您的预留具有足够的容量,从而比使用空闲池执行得更好。
QUERY
:此预留用于非持续查询作业,包括 SQL、DDL、DML 和 BigQuery ML 查询。
您不能将槽分配给特定任务。BigQuery 调度器会处理预留中的任务槽分配。如需详细了解槽的使用方式,请参阅预留中的槽分配。
了解工作负载管理
BigQuery 预留是组织范围的资源,通常归项目所有,但可供组织中的其他项目使用。您集中购买预留以便在整个组织中使用。您可以购买承诺的容量并将该容量分配给部门或分部,以要求各个部门或分部管理自己的预留。管理项目将与一个 Cloud Billing 账号关联,并且将由该账号为容量付费。
您可以为您的每个部门或分部使用独特的 Google Cloud 组织。在这种情况下,您需要为每个部门定义管理项目,并从管理项目管理该部门的预留。组织之间不会共享承诺或空闲的容量。
空闲槽和未分配的槽仅会在同一管理项目内以及同一版本中创建的预留之间共享。如果您使用多个管理项目,则不会在不同管理项目的多个预留之间共享槽。
管理组织工作负载
在您创建承诺和预留时,它们与一个 Google Cloud 项目相关联。此项目管理 BigQuery Reservations 资源,并且是这些资源的主要结算来源。此项目不一定得是 BigQuery 作业所在的项目。
最佳做法是为预留资源创建一个专用项目。此项目称为“管理”项目,因为它将承诺的结算和管理集中到一处。为此项目提供一个描述性名称,例如 bq-COMPANY_NAME-admin
。然后创建一个项目或多个不同的项目来保存 BigQuery 作业。
只能将管理项目所在的组织资源中的项目分配给预留。如果管理项目不属于组织,则只有该项目才能使用分配给该项目的槽。
管理项目按承诺的槽付费。使用管理项目拥有的预留中的槽的项目不会产生槽费用。您可以购买多种方案(例如,一年期和三年期承诺),并将槽放在同一个管理项目中。
最佳实践是为所有预留创建一个管理项目。使用单个管理项目可简化管理结算和分配槽的方式。您应仅在管理项目上启用 BigQuery Reservations API,以使所有承诺都通过此项目进行管理。
工作负载和部门管理
您可以使用 BigQuery Reservations 来隔离您针对各种工作负载、团队或部门的承诺容量,具体方法是创建更多预留并将项目分配到这些预留。预留是一个独立的资源池,它可利用整个组织的空闲容量。
例如,假设您拥有 1,000 个槽的总承诺容量和 3 种工作负载类型:数据科学、ELT 和 BI。
- 您可以创建包含 500 个槽的
ds
预留,并将所有相关的 Google Cloud 项目分配到ds
预留。 - 您可以创建包含 300 个槽的
elt
预留,并将用于 ELT 工作负载的项目分配到elt
预留。 - 您可以创建包含 200 个槽的
bi
预留,并将与 BI 工具关联的项目分配到bi
预留。
您可以选择为各个团队或部门创建预留,而不是跨工作负载划分容量。
管理不同地区中的预留
预留是区域级资源。在一个区域购买的槽和创建的预留不能在任何其他区域使用。单区域位置与多区域位置不一致,即使单区域位置包含在多区域位置也是如此。例如,您无法使用 EU
多区域中的预留在 europe-west1
中运行作业。项目、文件夹和组织都可以分配给一个区域中的预留,还可在其他区域以按需结算的方式运行。如需管理另一个区域中的预留,请执行以下操作:
在 Google Cloud 控制台中,转到 BigQuery 页面。
在导航菜单中,点击容量管理。
在位置列表中,选择要管理预留的区域。
选择区域后,您可以创建预留、创建承诺并将项目分配给预留。
承诺
容量承诺是指在指定时间段内购买的槽。您可以按 100 个槽的增量购买槽,最高可达槽配额。容量承诺是可选的,但可以可以节省稳定状态的工作负载的费用。您可以创建的承诺数量不受限制。承诺购买成功之时您便支付了费用。如需了解当前的价格信息,请参阅容量承诺价格。
三年期承诺。您购买了三年期承诺。您可以在 3*365 天后选择是继续续订,还是转换为其他类型的承诺方案。
包年。您购买了 365 天的承诺使用合约。您可以在 365 天后选择是继续续订,还是转换为其他类型的承诺方案。
在承诺期结束时,您的承诺将根据所选的续订方案续订。
年度或三年期承诺方案的计费方式为按月计费。但是,财务承诺适用于整个承诺期限,不能按月取消。您的用量每天都会在结算报告中更新,并且可以随时查看。
槽承诺受可用容量的限制。当您尝试购买槽承诺时,不保证购买一定会成功。但是,在承诺购买成功后,在承诺到期之前,该容量将一直可用。
续订承诺
购买承诺时,您可以选择续订方案。在承诺到期之前,您可以随时更改承诺的续订方案。您可以使用以下续订方案:
- 无。合约期结束后,承诺将被移除。预留不受影响。
- 包年。合约期结束后,您的承诺将再续订一年。
- 3 年。合约期结束后,您的承诺将再续订三年。
如需了解如何购买和续订承诺,请参阅创建容量承诺。
例如,如果您在 2019 年 10 月 5 日下午 6:00 购买了一份年度承诺,则我们从那一刻起开始向您收费。您可以在 2020 年 10 月 4 日下午 6:00 之后删除或更新承诺,注意 2020 年是闰年。您可以在 2020 年 10 月 4 日下午 6:00 之前更改续订方案,如下所示:
- 如果您选择续订年度承诺,则在 2020 年 10 月 4 日下午 6:00,您的承诺将续订一年。
- 如果您选择续订三年承诺,则在 2020 年 10 月 4 日下午 6:00,您的承诺将续订三年。
注意:在承诺到期后,续订过程最多可能需要一小时。例如,如果某项承诺在 2020 年 10 月 4 日下午 6:00 到期,则系统中会在 2020 年 10 月 4 日大约下午 6:00 到 7:00 之间显示续订的承诺记录。在此数据更新期间,系统不会收取按需费用,因为创建的承诺的有效开始时间为下午 6 点。
承诺到期
创建承诺后,只有在承诺到期后才能将其删除。如需删除年度或三年期承诺,请将其续订方案设置为 NONE
。
承诺到期后,系统会自动将其删除。如需详细了解承诺到期,请参阅承诺到期。
如果您无意中购买了承诺或配置承诺时出错,请与 Cloud Billing 支持团队联系以获取帮助。