在 Amazon Redshift 中建立具體化檢視 - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 Amazon Redshift 中建立具體化檢視

在數據倉庫環境中,應用程序通常必須對大型表執行複雜的查詢。例如 SELECT 陳述式,它們對包含數十億個資料表的資料表執行多個資料表聯結和彙整。處理這些查詢相當耗費系統資源,且運算結果也會耗費時間。

Amazon Redshift 中的具體化檢視提供解決這些問題的方式。「具體化檢視」包含預先運算的結果集,該結果集是以對一或多個基底資料表進行的 SQL 查詢為基礎。您可以發出 SELECT 陳述式來查詢具體化檢視,其方式與您查詢資料庫中其他資料表或檢視的方式相同。Amazon Redshift 會從具體化檢視傳回預先運算的結果,完全無須存取基底資料表。從使用者的觀點而言,傳回查詢結果的速度會比從基底資料表擷取相同的資料時要快上許多。

具體化檢視在加速可預測和重複的查詢時特別有用。相較於對大型資料表 (例如彙整或多個聯結) 執行耗費資源的查詢,應用程式可以改為查詢具體化檢視,並且檢索預先運算的結果集。例如,請考慮使用一組查詢來填入儀錶板的方案,例如 AmazonQuickSight。這種使用案例便相當適合使用具體化檢視,因為查詢是可預期的,且會一再地重複進行。

您可以根據其他實例化視圖定義實例化視圖。使用實例化視圖上的實例化視圖以擴展具體化檢視的功能。在這種方法中,現有實例化視圖與查詢檢索數據的基表扮演相同的角色。

對於對不同的聚合或 GROUP BY 選項重複使用預計算的連接,此方法尤其有用。例如,採用一個實體化視圖,該視圖將客户信息(包含百萬行)與物料訂單詳細信息(包含數十億行)聯接起來。這是一個按需反覆計算的昂貴查詢。您可以對在此實體化視圖之上創建的實體化視圖使用不同的 GROUP BY 選項,並與其他表聯接。這樣做可以節省計算時間,否則用於每次運行昂貴的底層連接。所以此標準支持表顯示了實例化視圖對其他實例化視圖的依賴關係。

當您建立具體化檢視時,Amazon Redshift 會運行用户指定的 SQL 陳述式,從基底資料表或資料表收集資料,並存放結果集。下圖提供具體化檢視的概觀tickets_mv,SQL 查詢通過使用兩個基表來定義eventssales

然後,您可以在查詢中使用這些實例化視圖來加快它們的速度。此外,Amazon Redshift 可以自動重寫這些查詢以使用實例化視圖,即使查詢未顯式引用實例化視圖也是如此。當您無法將查詢更改為使用實例化視圖時,自動重寫查詢在提高性能方面尤其強大。

若要更新具體化檢視中的資料,您可以隨時使用 REXREVE 具體化檢視陳述式手動重新整理具體化檢視。Amazon Redshift 會識別在基底資料表或資料表中發生的變更,然後將這些變更套用到具體化檢視。由於查詢的自動重寫要求實例化視圖啟動 至 日期(作為實體化視圖所有者),請確保每當基表發生更改時都刷新實例化視圖。

Amazon Redshift 提供了一些方法以保持實例化視圖 至 自動重寫的日期。您可以使用自動刷新選項配置實體化視圖,以便在更新實體化視圖的基表時刷新實體化視圖。此自動刷新操作在羣集資源可用時運行,以最大限度地減少對其他工作負載的中斷。由於自動刷新的計劃取決於工作負載,因此您可以更好地控制 Amazon Redshift 刷新實例化視圖的時間。您可以使用 Amazon Redshift 調度程序 API 和控制台集成來安排實例化視圖刷新作業。如需查詢調度的詳細資訊,請參在 Amazon Redshift 控制台上安排查詢

當存在服務水準協議 (SLA) 要求時,執行此作業尤其有用up-to-date具體化檢視中的資料。您還可以手動刷新任何可自動刷新的實體化視圖。如需如何建立具體化檢視的相關資訊,請參閱CREATE MATERIALIZED VIEW

您可以發出 SELECT 陳述式來查詢具體化檢視。如需如何查詢具體化檢視的相關資訊,請參閱查詢具體化檢視。結果集最終會隨著在基礎資料表中插入、更新和刪除資料而過時。您可以隨時重新整理具體化檢視,以使用基礎資料表中的最新變更來更新它。如需如何重新整理具體化檢視的相關資訊,請參閱REFRESH MATERIALIZED VIEW

如需用於建立和管理具體化檢視的 SQL 命令詳細資訊,請參閱下列命令主題:

如需用於監控具體化檢視的系統資料表和檢視相關資訊,請參閱下列主題: