ALTER MATERIALIZED VIEW - Amazon Redshift

Amazon Redshift 自 2025 年 11 月 1 日起不再支援建立新的 Python UDF。如果您想要使用 Python UDF,請在該日期之前建立 UDF。現有 Python UDF 將繼續正常運作。如需詳細資訊,請參閱部落格文章

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

ALTER MATERIALIZED VIEW

變更具體化視觀表的屬性。

語法

ALTER MATERIALIZED VIEW mv_name { AUTO REFRESH { YES | NO } | ALTER DISTKEY column_name | ALTER DISTSTYLE ALL | ALTER DISTSTYLE EVEN | ALTER DISTSTYLE KEY DISTKEY column_name | ALTER DISTSTYLE AUTO | ALTER [COMPOUND] SORTKEY ( column_name [,...] ) | ALTER SORTKEY AUTO | ALTER SORTKEY NONE | ROW LEVEL SECURITY { ON | OFF } [ CONJUNCTION TYPE { AND | OR } ] [FOR DATASHARES] };

Parameters

mv_name

具體化視觀表的名稱。

AUTO REFRESH { YES | NO }

開啟或關閉具體化視觀表自動重新整理的子句。如需具體化視觀表自動重新整理的相關資訊,請參閱 重新整理具體化視觀表

ALTER DISTSTYLE ALL

將關係的現有分佈樣式變更為 ALL 的子句。考慮下列各項:

  • 無法同時在相同關係上執行 ALTER DISTSTYLE、ALTER SORTKEY 和 VACUUM。

    • 如果 VACUUM 目前執行中,然後執行 ALTER DISTSTYLE ALL 會傳回錯誤。

    • 如果 ALTER DISTSTYLE ALL 執行中,則不會在關係上啟動背景清空。

  • 包含交錯排序索引鍵的關係和暫存資料表不支援 ALTER DISTSTYLE ALL 命令。

  • 如果分佈樣式先前已定義為 AUTO,則該關係不再是自動資料表最佳化的候選項目。

如需 DISTSTYLE ALL 的詳細資訊,請前往 CREATE MATERIALIZED VIEW

ALTER DISTSTYLE EVEN

將關係的現有分佈樣式變更為 EVEN 的子句。考慮下列各項:

  • 無法同時在相同關係上執行 ALTER DISTSYTLE、ALTER SORTKEY 和 VACUUM。

    • 如果 VACUUM 目前執行中,然後執行 ALTER DISTSTYLE EVEN 會傳回錯誤。

    • 如果 ALTER DISTSTYLE EVEN 執行中,則不會在關係上啟動背景清空。

  • 包含交錯排序索引鍵的關係和暫存資料表不支援 ALTER DISTSTYLE EVEN 命令。

  • 如果分佈樣式先前已定義為 AUTO,則該關係不再是自動資料表最佳化的候選項目。

如需 DISTSTYLE EVEN 的詳細資訊,請前往 CREATE MATERIALIZED VIEW

ALTER DISTKEY column_name 或 ALTER DISTSTYLE KEY DISTKEY column_name

此子句會變更作為關係的分佈索引鍵使用的欄。考慮下列各項:

  • VACUUM 和 ALTER DISTKEY 無法在相同關係上並行執行。

    • 如果 VACUUM 已在執行,則 ALTER DISTKEY 會傳回錯誤。

    • 如果 ALTER DISTKEY 執行中,則不會在關係上啟動背景清空。

    • 如果 ALTER DISTKEY 執行中,則前景清空會傳回錯誤。

  • 您一次僅可以在一個關係上執行一個 ALTER DISTKEY 命令。

  • 包含交錯排序索引鍵的關係不支援 ALTER DISTKEY 命令。

  • 如果分佈樣式先前已定義為 AUTO,則該關係不再是自動資料表最佳化的候選項目。

指定 DISTSTYLE KEY 時,資料是依 DISTKEY 資料欄中的值分佈。如需 DISTSTYLE 的詳細資訊,請前往 CREATE MATERIALIZED VIEW

ALTER DISTSTYLE AUTO

將關係的現有分佈樣式變更為 AUTO 的子句。

將分佈樣式變更為 AUTO 時,關係的分佈樣式會設定如下:

  • 將具有 DISTSTYLE ALL 的小型關係轉換為 AUTO(ALL)。

  • 將具有 DISTSTYLE EVEN 的小型關係轉換為 AUTO(ALL)。

  • 將具有 DISTSTYLE KEY 的小型關係轉換為 AUTO(ALL)。

  • 將具有 DISTSTYLE ALL 的大型關係轉換為 AUTO(EVEN)。

  • 將具有 DISTSTYLE EVEN 的大型關係轉換為 AUTO(EVEN)。

  • 將具有 DISTSTYLE KEY 的大型關係轉換為 AUTO(KEY) 並保留 DISTKEY。在這種情況下,Amazon Redshift 不會對關係進行任何變更。

如果 Amazon Redshift 判斷新的分佈樣式或索引鍵可以改善查詢效能,那麼 Amazon Redshift 可能會在未來變更關係的分佈樣式或索引鍵。例如,Amazon Redshift 可能會將 DISTSTYLE 為 AUTO(KEY) 的關係轉換為 AUTO(EVEN),反之亦然。如需修改分佈索引鍵時行為 (包括資料重新分佈和鎖定) 的相關資訊,請前往 Amazon Redshift Advisor 建議

如需 DISTSTYLE AUTO 的詳細資訊,請前往 CREATE MATERIALIZED VIEW

若要檢視關係的分佈樣式,請查詢 SVV_TABLE_INFO 系統目錄檢視。如需詳細資訊,請前往 SVV_TABLE_INFO。若要檢視關係的 Amazon Redshift Advisor 建議,請查詢 SVV_ALTER_TABLE_RECOMMENDATIONS 系統目錄檢視。如需詳細資訊,請前往 SVV_ALTER_TABLE_RECOMMENDATIONS。若要檢視 Amazon Redshift 所採取的動作,請查詢 SVL_AUTO_WORKER_ACTION 系統目錄檢視。如需詳細資訊,請前往 SVL_AUTO_WORKER_ACTION

ALTER [COMPOUND] SORTKEY ( column_name [,...] )

此子句可變更或新增用於關係的排序索引鍵。暫存資料表不支援 ALTER SORTKEY。

當您變更排序索引鍵時,新排序索引鍵或原始排序索引鍵中欄的壓縮編碼可能會變更。如果沒有明確定義關係的編碼,則 Amazon Redshift 會自動指定壓縮編碼,如下所示:

  • 定義為排序索引鍵的資料欄會有指派的 RAW 壓縮。

  • 定義為 BOOLEAN、REAL 或 DOUBLE PRECISION 資料類型的資料欄會有指派的 RAW 壓縮。

  • 定義為 SMALLINT、INTEGER、BIGINT、DECIMAL、DATE、TIME、TIMETZ、TIMESTAMP 或 TIMESTAMPTZ 的資料欄會有指派的 AZ64 壓縮。

  • 定義為 CHAR 或 VARCHAR 的資料欄會有指派的 LZO 壓縮。

考慮下列各項:

  • 您最多可為每個關係的排序索引鍵定義 400 個欄。

  • 您可以將交錯排序索引鍵修改為複合排序索引鍵或無排序索引鍵。但是,您無法將複合排序索引鍵修改為交錯排序索引鍵。

  • 如果排序索引鍵先前已定義為 AUTO,則該關係不再是自動資料表最佳化的候選項目。

  • Amazon Redshift 建議對定義為排序索引鍵的資料欄使用 RAW 編碼 (不壓縮)。當您變更資料欄以選擇其做為排序索引鍵時,資料欄的壓縮會變更為 RAW 壓縮 (不壓縮)。這可能會增加關係所需的儲存空間。關係大小的增加幅度取決於特定的關係定義和關係內容。如需壓縮的詳細資訊,請前往 壓縮編碼

當資料載入關係之後,資料就會依據排序索引鍵的排序載入。當您修改排序索引鍵時,Amazon Redshift 會重新排列資料。如需 SORTKEY 的詳細資訊,請前往 CREATE MATERIALIZED VIEW

ALTER SORTKEY AUTO

將目標關係的排序索引鍵變更或新增至 AUTO 的子句。暫存資料表不支援 SORTKEY AUTO。

當您將排序索引鍵修改為 AUTO 時,Amazon Redshift 會保留關係的現有排序索引鍵。

如果 Amazon Redshift 判斷新的排序索引鍵可以改善查詢效能,那麼 Amazon Redshift 可能會在未來變更關係的排序索引鍵。

如需 SORTKEY AUTO 的詳細資訊,請前往 CREATE MATERIALIZED VIEW

若要檢視關係的排序索引鍵,請查詢 SVV_TABLE_INFO 系統目錄檢視。如需詳細資訊,請前往 SVV_TABLE_INFO。若要檢視關係的 Amazon Redshift Advisor 建議,請查詢 SVV_ALTER_TABLE_RECOMMENDATIONS 系統目錄檢視。如需詳細資訊,請前往 SVV_ALTER_TABLE_RECOMMENDATIONS。若要檢視 Amazon Redshift 所採取的動作,請查詢 SVL_AUTO_WORKER_ACTION 系統目錄檢視。如需詳細資訊,請前往 SVL_AUTO_WORKER_ACTION

ALTER SORTKEY NONE

移除目標關係的排序索引鍵的子句。

如果排序索引鍵先前已定義為 AUTO,則該關係不再是自動資料表最佳化的候選項目。

ROW LEVEL SECURITY { ON | OFF } [ CONJUNCTION TYPE { AND | OR } ] [ FOR DATASHARES ]

開啟或關閉關係的資料列層級安全性的子句。

開啟關係的資料列層級安全性時,您只能讀取資料列層級安全政策允許您存取的資料列。如果沒有任何政策授予您關係存取權,您就無法看到關聯中的任何資料列。只有超級使用者和具有 sys:secadmin 角色的使用者或角色可以設定 ROW LEVEL SECURITY 子句。如需詳細資訊,請參閱資料列層級安全性

  • [ CONJUNCTION TYPE { AND | OR } ]

    一個子句,讓您為關係選擇資料列層級安全政策的結合類型。將多個資料列層級安全政策附加至關係時,您可以將政策與 AND 或 OR 子句結合使用。根據預設,Amazon Redshift 將 RLS 政策與 AND 子句結合在一起。具有 sys:secadmin 角色的超級使用者、使用者或角色可以使用此子句來定義關係之資料列層級安全政策的組合類型。如需詳細資訊,請參閱每個使用者結合多個政策

  • FOR DATASHARES

    該子句會決定是否可透過資料共用存取受 RLS 保護的關係。預設的情況是無法透過資料共用存取受 RLS 保護的關係。搭配此子句執行的 ALTER MATERIALIZED VIEW ROW LEVEL SECURITY 命令只會影響關係的資料共用存取屬性。ROW LEVEL SECURITY 屬性並未變更。

    如果您讓受 RLS 保護的關係可以透過資料庫存取,則該關係在取用者端資料庫中不會有資料列層級的安全性。關係會在生產者端保留其 RLS 屬性。

範例

下列範例可讓 tickets_mv 具體化視觀表自動重新整理。

ALTER MATERIALIZED VIEW tickets_mv AUTO REFRESH YES