监控具体化视图
您可以通过查看 BigQuery INFORMATION_SCHEMA
视图来监控具体化视图使用情况和刷新作业。 如需创建具体化视图的列表,请参阅列出具体化视图。
物化视图 INFORMATION_SCHEMA
视图
如需发现具体化视图,请查询 INFORMATION_SCHEMA.TABLES
视图。如需检索物化视图的属性,请查询 INFORMATION_SCHEMA.TABLE_OPTIONS
视图。
INFORMATION_SCHEMA.VIEWS
视图表中未列出具体化视图。
监控自动刷新
本部分介绍了如何查看具体化视图的刷新详情。
查看上次刷新状态
如需检索具体化视图的当前状态,请调用 tables.get
方法或查询 INFORMATION_SCHEMA.MATERIALIZED_VIEWS
视图。
例如:
SELECT table_name, last_refresh_time, refresh_watermark, last_refresh_status FROM `DATASET`.INFORMATION_SCHEMA.MATERIALIZED_VIEWS;
如果 last_refresh_status
的值不是 NULL
,则表示上一次自动刷新作业失败。手动刷新请求不会在此处体现。对基表的更改可能会使物化视图定义失效,从而导致自动刷新期间发生错误。如需了解详情,请参阅增量更新。例如,如果物化视图引用的列从基表中删除,则 last_refresh_status
字段会返回 invalidQuery
错误。如需了解详情,请参阅错误消息。
列出自动刷新作业
如需列出物化视图自动刷新作业,请调用 jobs.list
方法。如需检索作业详细信息,请调用 jobs.get
方法。您还可以查询 INFORMATION_SCHEMA.JOBS_BY_*
视图以获取作业。自动刷新作业的作业 ID 包含 materialized_view_refresh
前缀,而且由 BigQuery 管理员账号启动。
例如:
SELECT job_id, total_slot_ms, total_bytes_processed, materialized_view_statistics.materialized_view[SAFE_OFFSET(0)].rejected_reason AS full_refresh_reason FROM `region-us.INFORMATION_SCHEMA.JOBS_BY_PROJECT` WHERE job_id LIKE '%materialized_view_refresh_%' LIMIT 10;
如需监控刷新作业的费用并在需要时调整自动刷新时间间隔,请查看 total_bytes_processed
和 total_slot_ms
字段。
例如,如果基表的提取率相对较小,则可以按较低的频率刷新视图。如果底层数据变化很快,则可以按较高的频率刷新视图。
如果基表在预定义的时间点(例如使用每晚提取、转换和加载 [ETL] 流水线)注入数据,请考虑控制物化视图维护时间表,如下所示:
如需详细了解具体化视图的价格,请参阅具体化视图价格。
监控物化视图使用情况
如需查看查询作业的物化视图使用情况,您可以调用 jobs.get
方法或查询 INFORMATION_SCHEMA.JOBS_BY_*
视图,并查看 materialized_view_statistics
字段。其中详细介绍了查询如何使用具体化视图,包括以下详细信息:
- 是否使用了物化视图。
- 物化视图被拒原因(如果未被使用)。
例如:
SELECT job_id, materialized_view_statistics FROM region-US.INFORMATION_SCHEMA.JOBS_BY_PROJECT WHERE job_id = '<my-query-job-id>';
如需查看某个物化视图在一段时间内的使用情况,请查询 INFORMATION_SCHEMA.JOBS_BY_*
视图。
例如,以下查询会返回使用目标物化视图的最近查询作业的摘要:
SELECT mv.table_reference.dataset_id, mv.table_reference.table_id, MAX(job.creation_time) latest_job_time, COUNT(job_id) job_count FROM region-US.INFORMATION_SCHEMA.JOBS_BY_PROJECT job, UNNEST(materialized_view_statistics.materialized_view) mv WHERE job.creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP, INTERVAL 7 DAY) AND mv.table_reference.dataset_id = 'my_dataset' AND mv.table_reference.table_id = 'my_materialized_view' AND mv.chosen = TRUE GROUP BY 1, 2;
排查使用物化视图的查询慢速的问题
如果查询使用物化视图且运行速度低于预期,请执行以下操作:
- 验证查询是否实际使用了预期的物化视图。如需查看详细说明,请参阅监控物化视图使用情况。
- 检查物化视图的新鲜度。
- 查看物化视图定义及其引用的数据,并考虑优化物化视图使用情况的方法。