外部資料表的中繼資料快取
本文說明如何使用中繼資料快取 (又稱為欄中繼資料索引),改善物件資料表和某些類型的 BigLake 資料表的查詢效能。
物件資料表和某些類型的 BigLake 資料表可快取外部資料儲存空間 (例如 Cloud Storage) 中檔案的結構描述資料。下列 BigLake 資料表類型支援中繼資料快取:
- Amazon S3 BigLake 資料表
- Cloud Storage BigLake 資料表
中繼資料包含檔案名稱、分割資訊,以及檔案的中繼資料,例如列數。您可以選擇是否要在資料表上啟用中繼資料快取功能。含有大量檔案和 Hive 區隔篩選器的查詢,最能從中繼資料快取作業中受益。
如果您未啟用中繼資料快取功能,資料表上的查詢必須讀取外部資料來源,才能取得物件中繼資料。讀取這類資料會增加查詢延遲時間,從外部資料來源列出數百萬個檔案可能需要幾分鐘的時間。啟用中繼資料快取功能後,查詢作業就能避免列出外部資料來源中的檔案,並且能更快速地分割及刪除檔案。
您可以在建立資料表時,為 BigLake 或物件資料表啟用中繼資料快取功能。如要進一步瞭解如何建立物件資料表,請參閱「建立物件資料表」。如要進一步瞭解如何建立 BigLake 資料表,請參閱下列任一主題:
中繼資料快取設定
有兩個屬性可用來控制這項功能的行為:
- 最大過時時間:指定查詢使用快取中繼資料的時間。
- 「中繼資料快取模式」會指定中繼資料的收集方式。
啟用中繼資料快取功能後,您可以指定中繼資料過時的最大間隔,以便針對資料表執行作業。舉例來說,如果您指定 1 小時的間隔,則如果表格在過去 1 小時內已重新整理,針對該表格的作業會使用快取中繼資料。如果快取的結構描述資料比這還舊,作業會改為從資料儲存庫 (Amazon S3 或 Cloud Storage) 擷取結構描述資料。您可以指定 30 分鐘至 7 天的過時間隔。
您可以選擇自動或手動重新整理快取:
- 自動重新整理功能會按照系統定義的間隔時間 (通常為 30 到 60 分鐘) 重新整理快取。如果資料儲存庫中的檔案會在隨機間隔下新增、刪除或修改,自動重新整理快取是一個不錯的做法。如果您需要控制重新整理的時間點 (例如在擷取-轉換-載入工作結束時觸發重新整理),請使用手動重新整理。
- 如要手動重新整理,請執行
BQ.REFRESH_EXTERNAL_METADATA_CACHE
系統程序,根據您指定的時間表重新整理中繼資料快取。針對 BigLake 資料表,您可以提供資料表資料目錄的子目錄,選擇性地重新整理中繼資料。這麼做可避免不必要的中繼資料處理作業。如果資料儲存庫中的檔案會在已知的間隔時間內新增、刪除或修改 (例如管線的輸出內容),手動重新整理快取是個不錯的做法。
手動和自動快取重新整理作業都會以 INTERACTIVE
查詢優先順序執行。
如果您選擇使用自動重新整理功能,建議您建立預留,然後為執行中繼資料快取重新整理工作的專案,建立使用 BACKGROUND
工作類型的指派。這可避免重新整理工作與使用者查詢資源產生競爭,並在可用資源不足時避免失敗。
設定過時間隔和中繼資料快取模式值前,請先考量兩者之間的互動方式。請見以下範例:
- 如果資料表的中繼資料快取設為需要手動重新整理,且失效間隔設為 2 天,則如果您希望針對資料表的作業使用快取中繼資料,就必須每 2 天或更短時間執行
BQ.REFRESH_EXTERNAL_METADATA_CACHE
系統程序。 - 如果資料表的中繼資料快取設為自動重新整理,且失效間隔設為 30 分鐘,如果中繼資料快取重新整理作業需要的時間超過一般 30 到 60 分鐘的時間範圍,則針對資料表執行的部分作業可能會從資料儲存庫讀取。
如要進一步瞭解如何為 BigLake 資料表設定中繼資料快取選項,請參閱「建立 Amazon S3 BigLake 外部資料表」或「為 Cloud Storage 建立 BigLake 外部資料表」。
如要進一步瞭解如何設定物件資料表的中繼資料快取選項,請參閱「建立物件資料表」。
取得中繼資料快取重新整理工作相關資訊
如要查看中繼資料快取重新整理工作相關資訊,請查詢 INFORMATION_SCHEMA.JOBS
檢視區塊,如以下範例所示:
SELECT * FROM `region-us.INFORMATION_SCHEMA.JOBS` WHERE job_id LIKE '%metadata_cache_refresh%' AND creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 6 HOUR) ORDER BY start_time DESC LIMIT 10;
使用客戶管理的加密金鑰搭配快取的結構描述
快取的結構描述會受到客戶代管的加密金鑰 (CMEK) 保護,該金鑰用於與快取的結構描述相關聯的資料表。這可能是直接套用至資料表的 CMEK,或是資料表從資料集或專案繼承的 CMEK。
如果為專案或資料集設定預設 CMEK,或是變更專案或資料集現有的 CMEK,這不會影響現有資料表或其快取的中繼資料。您必須變更資料表的鍵,才能將新鍵套用至資料表及其快取的中繼資料。
在 BigQuery 中建立的 CMEK 不適用於 BigLake 和物件資料表使用的 Cloud Storage 檔案。如要取得端對端 CMEK 加密功能,請為這些檔案在 Cloud Storage 中設定 CMEK。
取得查詢工作使用中繼資料快取的相關資訊
如要取得查詢工作中繼資料快取用量相關資訊,請為該工作呼叫 jobs.get
方法,並查看 Job
資源的 JobStatistics2
區段中的 MetadataCacheStatistics
欄位。這個欄位會提供資訊,說明查詢使用了哪些支援中繼資料快取的表格、查詢是否使用了中繼資料快取,以及如果沒有使用,則說明原因。
表格統計資料
對於以 Parquet 檔案為基礎的 BigLake 資料表,系統會在重新整理中繼資料快取時收集資料表統計資料。系統會在自動和手動重新整理期間收集資料表統計資料,統計資料會與中繼資料快取一併保留。
收集的資料表統計資料包括檔案資訊,例如列數、實體和未壓縮的檔案大小,以及欄的基數。當您在以 Parquet 為基礎的 BigLake 資料表上執行查詢時,這些統計資料會提供給查詢最佳化工具,以便進行更完善的查詢規劃,並可能改善某些類型查詢的查詢效能。舉例來說,動態限制傳播是常見的查詢最佳化方式,在這種情況下,查詢最佳化工具會從較小的維度資料表,動態推斷大型事實資料表中的預設條件。雖然這項最佳化功能可透過使用標準化表格結構定義加快查詢速度,但需要準確的資料表統計資料。中繼資料快取收集的資料表統計資料,可讓您在 BigQuery 和 Apache Spark 中進一步最佳化查詢計畫。
限制
以下限制適用於中繼快取:
- 如果您同時發出多個手動重新整理要求,只有其中一個會成功。
- 如果未重新整理,中繼資料快取會在 7 天後過期。
- 如果您更新資料表的來源 URI,中繼資料快取不會自動重新整理,後續查詢會傳回來自過時快取的資料。如要避免這種情況,請手動重新整理中繼資料快取。如果表格的中繼資料快取已設為自動重新整理,您必須將表格的重新整理模式改為手動,執行手動重新整理,然後將表格的重新整理模式再次設為自動。
如果您要手動重新整理中繼資料快取,且目標資料集和 Cloud Storage 值區位於地區位置,則在執行
BQ.REFRESH_EXTERNAL_METADATA_CACHE
程序呼叫時,您必須明確指定這個位置。您可以選擇下列其中一種操作方式:主控台
前往「BigQuery」頁面
在編輯器中選取分頁。
依序按一下
「More」和「Query settings」。在「Advanced options」部分,取消勾選「Automatic location selection」核取方塊,然後指定目標區域。
按一下 [儲存]。
在該編輯器分頁中,執行包含
BQ.REFRESH_EXTERNAL_METADATA_CACHE
程序呼叫的查詢。
bq
如果您使用
bq query
執行包含BQ.REFRESH_EXTERNAL_METADATA_CACHE
程序呼叫的查詢,請務必指定--location
旗標。
後續步驟
- 進一步瞭解如何使用中繼資料快取功能建立 Cloud Storage BigLake 資料表。
- 進一步瞭解如何使用中繼資料快取功能建立 Amazon S3 BigLake 資料表。
- 進一步瞭解如何使用中繼資料快取建立物件資料表。
- 瞭解如何在支援中繼資料快取的 BigLake 資料表上使用具體化檢視表。