管理具体化视图建议
本文档介绍了具体化视图 Recommender 的工作原理,还介绍了如何查看和应用任何具体化视图建议。
简介
BigQuery 具体化视图 Recommender 可帮助您提高工作负载性能并节省工作负载执行费用。这些建议基于过去 30 天内的历史查询执行特征。
具体化视图是预计算视图,可定期缓存查询结果以提高性能和效率。具体化视图使用智能调整以透明方式重写针对源表的查询,以使用现有具体化视图来提高性能和效率。
Recommender 的工作原理
Recommender 每天为在 BigQuery 中执行查询作业的每个项目生成建议。建议基于过去 30 天的工作负载执行情况分析。具体化视图 Recommender 会查找重复的查询模式,并计算将重复子查询移动到增量具体化视图时可以节省的费用。Recommender 会考虑查询时节省的任何费用以及具体化视图的维护费用。如果这些综合因素显示出显著的积极结果,则 Recommender 会提出建议。
请思考以下查询示例:
WITH revenue AS
(SELECT l_suppkey as supplier_no,
sum(l_extendedprice * (1 - l_discount)) as total_revenue
FROM lineitem
WHERE
l_shipdate >= date '1996-01-01'
AND l_shipdate < date_add(date '1996-01-01', interval 3 MONTH)
GROUP BY l_suppkey)
SELECT s_suppkey,
s_name,
s_address,
s_phone,
total_revenue
FROM
supplier,
revenue
WHERE s_suppkey = supplier_no
AND total_revenue =
(SELECT max(total_revenue)
FROM revenue)
ORDER BY s_suppkey
此查询示例显示了主要供应商的相关信息。该查询包含一个名为 revenue
的通用表表达式 (CTE),表示每个供应商的总收入 (l_suppkey
)。 revenue
将与供应商表联接,条件是供应商的 total_revenue
在所有供应商中均与 max(total_revenue)
匹配。因此,该查询会计算具有最高总收入的供应商的信息(l_suppkey
、s_name
、s_address
、s_phone
、total_revenue
)。
整个查询本身过于复杂,无法放入增量具体化视图中。但是,supplier
CTE 是对单个表的聚合,这是一种增量具体化视图支持的查询模式。supplier
CTE 也是查询中计算开销最高的部分。因此,如果针对不断更改的源表反复运行示例查询,则具体化视图 Recommender 可能会建议将 supplier
CTE 放入具体化视图中。上述示例查询的具体化视图建议可能类似于以下内容:
CREATE MATERIALIZED VIEW mv AS
SELECT l_suppkey as supplier_no,
sum(l_extendedprice * (1 - l_discount)) as total_revenue
FROM lineitem
WHERE
l_shipdate >= date '1996-01-01'
AND l_shipdate < date_add(date '1996-01-01', interval 3 MONTH)
GROUP BY l_suppkey
Recommender API 还会以数据分析的形式返回查询执行信息。数据分析是帮助您了解项目的工作负载的发现结果,提供了有关具体化视图建议如何优化工作负载费用的更多背景信息。
限制
- 具体化视图 Recommender 不支持选择不进行数据处理的标准流程。如需停止接收具体化视图建议,请按照 Gemini in BigQuery 正式发布前注册表单中的说明操作。
- 无法将具体化视图建议导出到 BigQuery。
准备工作
您需要先启用 Recommender API,然后才能查看或应用具体化视图建议。
所需权限
如需获得访问具体化视图建议所需的权限,请让管理员向您授予 BigQuery Materialized View Recommender Viewer (roles/recommender.bigqueryMaterializedViewViewer
) IAM 角色。
如需详细了解如何授予角色,请参阅管理访问权限。
此预定义角色可提供访问具体化视图建议所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
如需访问具体化视图建议,您需要具备以下权限:
-
recommender.bigqueryMaterializedViewRecommendations.get
-
recommender.bigqueryMaterializedViewRecommendations.list
如需详细了解 BigQuery 中的 IAM 角色和权限,请参阅 IAM 简介。
查看具体化视图建议
本部分介绍如何使用 Google Cloud 控制台、Google Cloud CLI 或 Recommender API 查看具体化视图建议和数据分析。
从下列选项中选择一项:
控制台
在 Google Cloud 控制台中,转到 BigQuery 页面。
点击
建议。此时会打开 BigQuery 建议窗格。在降低 BigQuery 工作负载费用下,点击查看详细信息。
此时会显示一个建议列表,其中显示了为当前项目生成的所有建议。此列表中的每条建议都会显示采纳建议后大致节省的费用。如需详细了解特定具体化视图建议或表数据分析,请点击详细信息。
gcloud
如需查看特定项目的具体化视图建议,请使用 gcloud recommender recommendations list
命令:
gcloud recommender recommendations list \ --project=PROJECT_NAME \ --location=REGION_NAME \ --recommender=google.bigquery.materializedview.Recommender \ --format=FORMAT_TYPE \
替换以下内容:
PROJECT_NAME
:执行查询作业的项目的名称REGION_NAME
:在其中执行查询作业的区域FORMAT_TYPE
:支持的 gcloud CLI 输出格式,例如 JSON
属性 | 与子类型相关 | 说明 |
---|---|---|
recommenderSubtype |
CREATE_MATERIALIZED_VIEW |
建议的类型。 |
content.overview.sql |
CREATE_MATERIALIZED_VIEW |
用于创建具体化视图的建议 DDL 语句。 |
content.overview.slotMsSavedMonthly |
CREATE_MATERIALIZED_VIEW |
建议的视图每月节省的槽毫秒数估算值。 |
content.overview.bytesSavedMonthly |
CREATE_MATERIALIZED_VIEW |
根据建议的视图,每月扫描节省的估算字节数。 |
content.overview.baseTables |
CREATE_MATERIALIZED_VIEW |
留待将来使用。 |
- 如需详细了解
recommendations
回答中的其他字段,请参阅 REST 资源:projects.locations.recommenders.recommendation
。 - 如需详细了解如何使用 Recommender API,请参阅使用 API - 建议。
如需使用 gcloud CLI 查看提示具体化视图建议的数据分析,请使用 gcloud recommender insights list
命令:
gcloud recommender insights list \ --project=PROJECT_NAME \ --location=REGION_NAME \ --insight-type=google.bigquery.materializedview.Insight \ --format=FORMAT_TYPE \
替换以下内容:
PROJECT_NAME
:执行查询作业的项目的名称REGION_NAME
:在其中执行查询作业的区域FORMAT_TYPE
:支持的 gcloud CLI 输出格式,例如 JSON
属性 | 与子类型相关 | 说明 |
---|---|---|
content.queryCount |
CREATE_MATERIALIZED_VIEW |
观察期内具有重复模式(可使用具体化视图进行优化)的查询数。 |
- 如需详细了解数据分析响应中的其他字段,请参阅 REST 资源:
projects.locations.insightTypes.insights
。 - 如需详细了解如何使用数据分析,请参阅使用 API - 数据分析。
REST API
如需查看特定项目的具体化视图建议,请使用 REST API。您必须在每个命令中提供一个身份验证令牌,该令牌可使用 gcloud CLI 获取。如需详细了解如何获取身份验证令牌,请参阅获取 ID 令牌的方法。
您可以使用 curl list
请求查看特定项目的所有建议:
$ curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "x-goog-user-project: PROJECT_NAME" https://recommender.googleapis.com/v1/projects/PROJECT_NAME/locations/LOCATION/recommenders/google.bigquery.materializedview.Recommender/recommendations
替换以下内容:
PROJECT_NAME
:包含 BigQuery 表的项目的名称LOCATION
:项目所在的位置。
属性 | 与子类型相关 | 说明 |
---|---|---|
recommenderSubtype |
CREATE_MATERIALIZED_VIEW |
建议的类型。 |
content.overview.sql |
CREATE_MATERIALIZED_VIEW |
用于创建具体化视图的建议 DDL 语句。 |
content.overview.slotMsSavedMonthly |
CREATE_MATERIALIZED_VIEW |
建议的视图每月节省的槽毫秒数估算值。 |
content.overview.bytesSavedMonthly |
CREATE_MATERIALIZED_VIEW |
根据建议的视图,每月扫描节省的估算字节数。 |
content.overview.baseTables |
CREATE_MATERIALIZED_VIEW |
留待将来使用。 |
- 如需详细了解
recommendations
回答中的其他字段,请参阅 REST 资源:projects.locations.recommenders.recommendation
。 - 如需详细了解如何使用 Recommender API,请参阅使用 API - 建议。
如需使用 REST API 查看提示具体化视图建议的数据分析,请运行以下命令:
$ curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "x-goog-user-project: PROJECT_NAME" https://recommender.googleapis.com/v1/projects/PROJECT_NAME/locations/LOCATION/insightTypes/google.bigquery.materializedview.Insight/insights
替换以下内容:
PROJECT_NAME
:包含 BigQuery 表的项目的名称LOCATION
:项目所在的位置。
属性 | 与子类型相关 | 说明 |
---|---|---|
content.queryCount |
CREATE_MATERIALIZED_VIEW |
观察期内具有重复模式(可使用具体化视图进行优化)的查询数。 |
- 如需详细了解数据分析响应中的其他字段,请参阅 REST 资源:
projects.locations.insightTypes.insights
。 - 如需详细了解如何使用数据分析,请参阅使用 API - 数据分析。
应用具体化视图建议
您可以通过在 Google Cloud 控制台中执行建议的 CREATE MATERIALIZED VIEW
类型 DDL 语句来应用建议以创建具体化视图。
在 Google Cloud 控制台中,转到 BigQuery 页面。
点击
建议。此时会打开 BigQuery 建议窗格。在降低 BigQuery 工作负载费用下,点击查看详细信息。
此时会显示一个建议列表,其中显示了为当前项目生成的所有建议。找到具体化视图建议,然后点击详细信息。
点击在 BigQuery Studio 中查看。此时将打开一个 SQL 编辑器,其中包含
CREATE MATERIALIZED VIEW
DDL 语句。在提供的
CREATE MATERIALIZED VIEW
语句中,使用唯一具体化视图名称修改MATERIALIZED_VIEW
占位符。运行
CREATE MATERIALIZED VIEW
DDL 语句以创建建议的具体化视图。
排查建议问题
问题:特定表未显示任何建议。
在以下情况下,可能不会显示具体化视图建议:
- 在项目执行的查询作业中没有任何周期性查询模式。
- 周期性查询模式不满足增量具体化视图的限制,并且不能放入适合智能调整的具体化视图中。
- 潜在具体化视图的维护费用较高。例如,源表通常由数据操纵语言 (DML) 操作修改,因此具体化视图将完全刷新,从而产生额外费用。
- 具有常见周期性模式的查询数量不足。
- 估算的每月节省微不足道(少于 1 个槽)。
- 项目执行的查询作业已在使用具体化视图。
价格
查看建议时,无需支付任何费用,也不会对工作负载性能产生负面影响。
通过创建具体化视图来应用建议时,可能会产生存储、维护和查询费用。如需了解详情,请参阅具体化视图价格。