

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊，請參閱[部落格文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

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

# REFRESH MATERIALIZED VIEW
<a name="materialized-view-refresh-sql-command"></a>

重新整理具體化檢視。

當您建立具體化視觀表時，其內容會反映當時基礎資料庫資料表或資料表的狀態。即使應用程式對基底資料表中的資料進行變更，具體化檢視中的資料仍會維持不變。

如要更新具體化視觀表中的資料，您可以隨時使用 `REFRESH MATERIALIZED VIEW` 陳述式。當您執行此陳述式時，Amazon Redshift 會識別在基底資料表或資料表中發生的變更，然後將這些變更套用到具體化視觀表。

如需具體化檢視的相關資訊，請參閱 [Amazon Redshift 中的具體化視觀表](materialized-view-overview.md)。

## 語法
<a name="mv_REFRESH_MATERIALIZED_VIEW-synopsis"></a>

```
REFRESH MATERIALIZED VIEW mv_name [ RESTRICT | CASCADE ]
```

## Parameters
<a name="mv_REFRESH_MATERIALIZED_VIEW-parameters"></a>

*mv\$1name*  
要重新整理的具體化檢視名稱。

RESTRICT  
選用的關鍵字。重新整理指定的具體化視觀表，但不會重新整理其相依的具體化視觀表。如果未指定 RESTRICT 或 CASCADE，則為預設值。

CASCADE  
選用的關鍵字。重新整理指定的具體化視觀表和所有其相依的具體化視觀表。

## 使用須知
<a name="mv_REFRESH_MARTERIALIZED_VIEW_usage"></a>

只有具體化檢視的擁有者才能對該檢視執行 `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\$1PART (日期、時間、間隔、time-tz)、DATE\$1TRUNC (時間戳記、間隔)。
+ 基礎資料表位於資料共用中的具體化視觀表支援累加式重新整理。
+ 包含其他具體化視觀表、Spectrum 資料表、不同 Redshift 叢集或 UDFs 中定義的資料表參考的具體化視觀表不支援從遠端資料共用叢集重新整理共用具體化視觀表。這類具體化視觀表可以從本機 （生產者） 叢集重新整理。

Amazon Redshift 中的某些操作會和具體化視觀表互動。其中部份作業可能會強制 `REFRESH MATERIALIZED VIEW` 作業完全重新計算具體化檢視，即使定義具體化檢視的查詢只會使用適用於增量重新整理的 SQL 功能。例如：
+ 如果具體化檢視並未重新整理，則背景 vacuum 操作可能會遭到封鎖。在內部定義的閾值期間後，便會允許執行 vacuum 操作。發生此 vacuum 操作時，任何依存的具體化檢視都會標記為在下一次重新整理時重新進行運算 (即使這些具體化檢視為累加式也一樣)。如需 VACUUM 的詳細資訊，請參閱 [VACUUM](r_VACUUM_command.md)。如需事件和狀態變更的相關資訊，請參閱 [STL\$1MV\$1STATE](r_STL_MV_STATE.md)。
+ 有些使用者在基底資料表上啟動的操作會強制具體化檢視在下一次執行 REFRESH 操作時重新運算。這類操作的範例：手動調用的 VACUUM、傳統調整大小、ALTER DISTKEY 操作，ALTER SORTKEY 操作和 TRUNCATE 操作。在某些情況下，自動操作也可能導致在下次執行 REFRESH 操作時，完整重新運算具體化視觀表。例如，自動清空刪除操作可能會導致完整重新運算。如需事件和狀態變更的相關資訊，請參閱 [STL\$1MV\$1STATE](r_STL_MV_STATE.md)。

## 階層式重新整理
<a name="mv_REFRESH_MATERIALIZED_VIEW_cascading"></a>

CASCADE 選項會依相依性順序重新整理指定的具體化視觀表及其所有相依的具體化視觀表：基礎 MV 會在上層 MV 之前 (拓撲順序) 經過 REFRESH。這可讓您在單一命令中更新一組巢狀具體化視觀表。

RESTRICT 選項 (若未指定 RESTRICT 或 CASCADE，則為預設值) 只會重新整理指定的具體化視觀表。

使用 CASCADE 選項時適用下列規則：
+ 只有具體化視觀表的擁有者或超級使用者可以執行 `REFRESH MATERIALIZED VIEW ... CASCADE` 命令。
+ 如果階層中有任何無法重新整理的具體化視觀表，則整個階層操作將會停止。

只有在本機和串流具體化視觀表上巢狀嵌套的 MV 才支援階層式重新整理功能。階層模式中不支援如 Spectrum 或資料共用等其他來源類型的具體化視觀表。CASCADE 會在單一交易中針對所有巢狀 MV 執行重新整理。

## 資料共用中具體化視觀表的累加式重新整理
<a name="mv_REFRESH_MATERIALIZED_VIEW_datashare"></a>

 共用基礎資料表時，Amazon Redshift 支援取用者資料共用中具體化視觀表的自動和累加式重新整理。累加式重新整理是一項操作，Amazon Redshift 會藉此識別基礎資料表自上一次重新整理後發生的變更，並且僅更新具體化視觀表中對應的記錄。如需此行為的詳細資訊，請參閱 [CREATE MATERIALIZED VIEW](https://docs.aws.amazon.com/redshift/latest/dg/materialized-view-create-sql-command.html#mv_CREATE_MARTERIALIZED_VIEW_datashare)。

## 增量重新整理的限制
<a name="mv_REFRESH_MARTERIALIZED_VIEW_limitations"></a>

對於使用下列任一 SQL 元素搭配查詢定義的具體化視觀表，Amazon Redshift 目前不支援累加式重新整理：
+ OUTER JOIN (RIGHT、LEFT 或 FULL)。
+ 集合操作：UNION、INTERSECT、EXCEPT、MINUS。
+ 當發生在子查詢和彙總函數中，或查詢中存在 GROUP BY 子句，或目標具體化視觀表包含排序索引鍵時，則 UNION ALL。
+ 彙整函數：MEDIAN、PERCENTILE\$1CONT、LISTAGG、STDDEV\$1SAMP、STDDEV\$1POP、APPROXIMATE COUNT、APPROXIMATE PERCENTILE 及位元彙整函數。
**注意**  
支援 COUNT、SUM、MIN、MAX 和 AVG 彙總函數。
+ DISTINCT 彙整函數，例如 DISTINCT COUNT、DISTINCT SUM 等。
+ 視窗函數。
+ 使用暫存資料表進行查詢最佳化的查詢，例如最佳化通用子運算式。
+ 子查詢
+ 在定義具體化視觀表的查詢中，參照下列查詢中的格式的外部資料表。
  +  Delta Lake 
  +  Hudi 

  對於使用上述以外格式定義的具體化視觀表，支援累加式重新整理。如需詳細資訊，請參閱[Amazon Redshift Spectrum 中外部資料湖資料表的具體化視觀表外部資料湖資料表的具體化視觀表](materialized-view-external-table.md)。
+ 可變函數，例如日期時間函數，RANDOM 和非穩定的使用者定義函數。
+ 若要了解有關零 ETL 整合的累加式重新整理的限制，請參閱[將零 ETL 整合與 Amazon Redshift 搭配使用的考量](https://docs.aws.amazon.com/redshift/latest/mgmt/zero-etl.reqs-lims.html)。
+ 從多個資料庫存取資料表。

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

## 範例
<a name="mv_REFRESH_MARTERIALIZED_VIEW_examples"></a>

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

```
REFRESH MATERIALIZED VIEW tickets_mv;
```

下列範例會重新整理 `products_mv` 具體化視觀表和所有其相依的具體化視觀表：

```
REFRESH MATERIALIZED VIEW products_mv CASCADE; 
```