監控具體化檢視表
您可以查看 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) 管道),請考慮控制以下的實際資料檢視維護時間表:
手動重新整理,可在 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;
使用具體化檢視表排解查詢速度緩慢的問題
如果查詢使用具體化檢視表,且執行速度不如預期,請執行下列操作:
- 確認查詢實際使用所需的具體化檢視表。如需詳細操作說明,請參閱「監控已具現檢視表的用量」。
- 檢查具體化檢視表的最新狀態。
- 請查看具體化檢視的定義和參照的資料,並考慮可改善具體化檢視用法的技巧。