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命令可以看見基底資料表中的哪些資料,或是在 Amazon Redshift 中執行的其他交易可見REFRESH命令所做的變更時。

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

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

  • 根據輸入引數類型,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

增量重新整理的限制

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

  • OUTER JOIN (RIGHT、LEFT 或 FULL)。

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

  • 聯合所有當它發生在一個子查詢和聚合函數或 GROUP BY 子句存在於查詢。

  • 彙總函式:中位數、百分位數、列表格、STDDEV_SAMP、STDDEV_POP、近似計數、近似百分位數和位元彙總函式。

    注意

    支援計數、總和、最小值、最大值和 AVG 彙總函式。

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

  • 視窗函數。

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

  • 在 FROM 子句以外任何位置的子查詢。

  • 在定義具體化檢視的查詢中,參閱為基礎表格的外部表格。

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

範例

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

REFRESH MATERIALIZED VIEW tickets_mv;