REFRESH MATERIALIZED VIEW - Amazon Redshift

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

REFRESH MATERIALIZED VIEW

重新整理具體化檢視。

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

如需具體化檢視的詳細資訊,請參閱 在 Amazon Redshift 中建立具體化檢視

Syntax (語法)

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_PART (日期、時間、間隔、間隔、間隔、間隔、間隔、間隔、間隔、間隔、間隔、間隔、間隔、間隔、間隔、間隔、間隔、間隔、

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 ALL 當它出現在子查詢中並且集合函數或 GROUP BY 子句存在於查詢中時。

  • 彙總函數:APPROXIMATE、PERCENT、LISTAGG、STDDEV_POP、STDDEV_POP、STDDEV_POP、APPROXIMATE 及位元彙整函數。

    注意

    支持 COUNT、SUM、最小值、最大值和 AVG 聚合函數。

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

  • 視窗函數。

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

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

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

  • 可變函數,例如日期-時間函數、RAND 和非穩定用户定義函數。

範例

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

REFRESH MATERIALIZED VIEW tickets_mv;