REFRESH MATERIALIZED VIEW - Amazon Redshift

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

REFRESH MATERIALIZED VIEW

重新整理具體化檢視。

當您建立具體化視觀表時,其內容會反映當時基礎資料庫資料表或資料表的狀態。即使應用程式對基底資料表中的資料進行變更,具體化檢視中的資料仍會維持不變。如要更新具體化視觀表中的資料,您可以隨時使用 REFRESH MATERIALIZED VIEW 陳述式。當您執行此陳述式時,Amazon Redshift 會識別在基底資料表或資料表中發生的變更,然後將這些變更套用到具體化視觀表。

如需具體化檢視的相關資訊,請參閱 在 Amazon Redshift 中建立具體化視觀表

語法

REFRESH MATERIALIZED VIEW mv_name

參數

mv_name

要重新整理的具體化檢視名稱。

使用須知

只有具體化檢視的擁有者才能對該檢視執行 REFRESH MATERIALIZED VIEW 操作。此外,擁有者必須對基礎資料表具有 SELECT 權限,才能成功執行 REFRESH MATERIALIZED VIEW

REFRESH MATERIALIZED VIEW 命令會以自己所屬的交易形式執行。遵循 Amazon Redshift 交易語意,以決定 REFRESH 命令可以看到基礎資料表中的哪些資料,或是當 REFRESH 命令進行變更時,在 Amazon Redshift 中執行的其他交易是否會顯示。

  • 針對累加式具體化檢視,REFRESH MATERIALIZED VIEW 只會使用已遞交的基底資料表資料列。因此,如果重新整理操作在相同交易中的資料處理語言 (DML) 陳述式之後執行,則重新整理看不見該 DML 陳述式的變更。

  • 針對具體化視觀表的完全重新整理,REFRESH MATERIALIZED VIEW 會根據一般 Amazon Redshift 交易語意,查看重新整理交易可見的所有基底資料表資料列。

  • 根據輸入引數類型,Amazon Redshift 仍支援具有特定輸入引數類型之下列函數的具體化檢視增量重新整理:DATE (時間戳記)、DATE_PART (日期、時間、間隔、time-tz)、DATE_TRUNC (時間戳記、間隔)。

  • 基礎資料表位於資料共用中的具體化視觀表支援累加式重新整理。

Amazon Redshift 中的某些操作會和具體化視觀表互動。其中部份作業可能會強制 REFRESH MATERIALIZED VIEW 作業完全重新計算具體化檢視,即使定義具體化檢視的查詢只會使用適用於增量重新整理的 SQL 功能。例如:

  • 如果具體化檢視並未重新整理,則背景 vacuum 操作可能會遭到封鎖。在內部定義的閾值期間後,便會允許執行 vacuum 操作。發生此 vacuum 操作時,任何依存的具體化檢視都會標記為在下一次重新整理時重新進行運算 (即使這些具體化檢視為累加式也一樣)。如需 VACUUM 的詳細資訊,請參閱 VACUUM。如需事件和狀態變更的相關資訊,請參閱 STL_MV_STATE

  • 有些使用者在基底資料表上啟動的操作會強制具體化檢視在下一次執行 REFRESH 操作時重新運算。這類操作的範例:手動調用的 VACUUM、傳統調整大小、ALTER DISTKEY 操作,ALTER SORTKEY 操作和 TRUNCATE 操作。如需事件和狀態變更的相關資訊,請參閱 STL_MV_STATE

資料命名中具體化視觀表的累加式重新整理

Amazon Redshift 支援在共用基礎資料表時,針對消費者資料保護中的具體化視圖進行自動和累加式重新整理。累加式重新整理是一項操作,Amazon Redshift 會識別基礎資料表或上次重新整理後發生的資料表中的變更,並僅更新具體化視觀表中的對應記錄。如需此行為的相關資訊,請參閱建立具體化視觀表

增量重新整理的限制

對於使用下列任一 SQL 元素搭配查詢定義的具體化視觀表,Amazon Redshift 目前不支援累加式重新整理:

  • OUTER JOIN (RIGHT、LEFT 或 FULL)。

  • 集合操作:UNION、INTERSECT、EXCEPT、MINUS。

  • UNION ALL,當這發生在子查詢和彙總函數中,或 GROUP BY 子句存在於查詢中時。

  • 彙整函數:MEDIAN、PERCENTILE_CONT、LISTAGG、STDDEV_SAMP、STDDEV_POP、APPROXIMATE COUNT、APPROXIMATE PERCENTILE 及位元彙整函數。

    注意

    支援 COUNT、SUM、MIN、MAX 和 AVG 彙總函數。

  • DISTINCT 彙整函數,例如 DISTINCT COUNT、DISTINCT SUM 等。

  • 視窗函數。

  • 使用暫存資料表進行查詢最佳化的查詢,例如最佳化通用子運算式。

  • 子查詢

  • 在定義具體化視觀表的查詢中,參照下列查詢中的格式的外部資料表。

    • Delta Lake

    • Hudi

    使用參照預覽軌跡上其他格式的外部資料表定義的具體化視觀表,支援累加式重新整理。如需詳細資訊,請參閱 Amazon Redshift 管理指南中的建立預覽叢集。如需設定預覽工作群組的詳細資訊,請參閱 Amazon Redshift 管理指南中的建立預覽工作群組

  • 可變函數,例如日期時間函數,RANDOM 和非穩定的使用者定義函數。

  • 如需零 ETL 整合的累加式重新整理相關限制,請參閱將零 ETL 整合與 Amazon Redshift 搭配使用時的考量事項。

如需有關具體化視觀表的相關資訊,包括具體化視觀表重新整理操作上的背景作業影響,例如 VACUUM,請參閱 使用須知

範例

以下範例會重新整理 tickets_mv 具體化檢視。

REFRESH MATERIALIZED VIEW tickets_mv;