

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://www.amazonaws.cn/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# ALTER MATERIALIZED VIEW
<a name="r_ALTER_MATERIALIZED_VIEW"></a>

更改实体化视图的属性。

## 语法
<a name="r_ALTER_MATERIALIZED_VIEW-synopsis"></a>

```
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]
};
```

## 参数
<a name="r_ALTER_MATERIALIZED_VIEW-parameters"></a>

*mv\$1name*  
要更改的实体化视图的名称。

AUTO REFRESH \$1 YES \$1 NO \$1  
开启或关闭实体化视图的自动刷新的子句。有关自动刷新实体化视图的更多信息，请参阅[刷新实体化视图](materialized-view-refresh.md)。

ALTER DISTSTYLE ALL  
用于将关系的现有分配方式更改为 `ALL` 的子句。请考虑以下事项：  
+ 不能对同一个关系并发运行 ALTER DISTSTYLE、ALTER SORTKEY 和 VACUUM。
  + 如果 VACUUM 当前正在运行，则运行 ALTER DISTSTYLE ALL 将返回错误。
  + 如果 ALTER DISTSTYLE ALL 正在运行，则不对关系启动后台 vacuum。
+ 对于具有交错排序键和临时表的关系，不支持 ALTER DISTSTYLE ALL 命令。
+ 如果分配方式以前被定义为 AUTO，则关系不再是自动表优化的候选项。
有关 DISTSTYLE ALL 的更多信息，请转至 [CREATE MATERIALIZED VIEW](materialized-view-create-sql-command.md)。

ALTER DISTSTYLE EVEN  
用于将关系的现有分配方式更改为 `EVEN` 的子句。请考虑以下事项：  
+ 不能对同一个关系并发运行 ALTER DISTSYTLE、ALTER SORTKEY 和 VACUUM。
  + 如果 VACUUM 当前正在运行，则运行 ALTER DISTSTYLE EVEN 将返回错误。
  + 如果 ALTER DISTSTYLE EVEN 正在运行，则不对关系启动后台 Vacuum。
+ 对于具有交错排序键和临时表的关系，不支持 ALTER DISTSTYLE EVEN 命令。
+ 如果分配方式以前被定义为 AUTO，则关系不再是自动表优化的候选项。
有关 DISTSTYLE EVEN 的更多信息，请转至 [CREATE MATERIALIZED VIEW](materialized-view-create-sql-command.md)。

ALTER DISTKEY *column\$1name* 或 ALTER DISTSTYLE KEY DISTKEY *column\$1name*  
一个子句，可更改用作关系的分配键的列。请考虑以下事项：  
+ 不能对同一个关系并发运行 VACUUM 和 ALTER DISTKEY。
  + 如果 VACUUM 已经运行，则 ALTER DISTKEY 返回错误。
  + 如果 ALTER DISTKEY 正在运行，则不对关系启动后台 Vacuum。
  + 如果 ALTER DISTKEY 正在运行，则前台 vacuum 会返回错误。
+ 您一次只能对一个关系运行一个 ALTER DISTKEY 命令。
+ 具有交错排序键的关系不支持 ALTER DISTKEY 命令。
+ 如果分配方式以前被定义为 AUTO，则关系不再是自动表优化的候选项。
指定 DISTSTYLE KEY 时，按 DISTKEY 列中的值分配数据。有关 DISTSTYLE 的更多信息，请转至 [CREATE MATERIALIZED VIEW](materialized-view-create-sql-command.md)。

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 建议](https://docs.amazonaws.cn/redshift/latest/dg/advisor-recommendations.html#alter-diststyle-distkey-recommendation)。  
有关 DISTSTYLE AUTO 的更多信息，请转至 [CREATE MATERIALIZED VIEW](materialized-view-create-sql-command.md)。  
要查看关系的分配方式，请查询 SVV\$1TABLE\$1INFO 系统目录视图。有关更多信息，请转至 [SVV\$1TABLE\$1INFO](r_SVV_TABLE_INFO.md)。要查看 Amazon Redshift Advisor 对关系的建议，请查询 SVV\$1ALTER\$1TABLE\$1RECOMMENDATIONS 系统目录视图。有关更多信息，请转至 [SVV\$1ALTER\$1TABLE\$1RECOMMENDATIONS](r_SVV_ALTER_TABLE_RECOMMENDATIONS.md)。要查看 Amazon Redshift 所采取的操作，请查询 SVL\$1AUTO\$1WORKER\$1ACTION 系统目录视图。有关更多信息，请转至 [SVL\$1AUTO\$1WORKER\$1ACTION](r_SVL_AUTO_WORKER_ACTION.md)。

ALTER [COMPOUND] SORTKEY ( *column\$1name* [,...] )  
一个旨在更改或添加用于关系的排序键的子句。临时表不支持 ALTER SORTKEY。  
当您更改排序键时，新排序键或原始排序键中列的压缩编码可能会更改。如果没有为关系显式定义编码，则 Amazon Redshift 按如下方式自动分配压缩编码：  
+ 为定义为排序键的列分配 RAW 压缩。
+ 为定义为 BOOLEAN、REAL 或 DOUBLE PRECISION 数据类型的列分配 RAW 压缩。
+ 定义为 SMALLINT、INTEGER、BIGINT、DECIMAL、DATE、TIME、TIMETZT、IMESTAMP 或 TIMESTAMPTZ 的列分配了 AZ64 压缩。
+ 定义为 CHAR 或 VARCHAR 的列分配了 LZO 压缩。
请考虑以下事项：  
+ 最多可以为每个关系的排序键定义 400 列。
+ 您可以将交错排序键更改为复合排序键或没有排序键。但是，您不能将复合排序键更改为交错排序键。
+ 如果排序键以前被定义为 AUTO，则关系不再是自动表优化的候选项。
+ Amazon Redshift 建议对定义为排序键的列使用 RAW 编码（不压缩）。当您更改列以将其选择为排序键时，列的压缩将更改为 RAW 压缩（无压缩）。这将增加关系所需的存储空间量。关系大小的增加程度取决于特定的关系定义和关系内容。有关压缩的更多信息，请转至[压缩编码](c_Compression_encodings.md)。
将数据加载到关系中时，将按照排序键的顺序加载数据。更改排序键时，Amazon Redshift 对数据重新排序。有关 SORTKEY 的更多信息，请转至 [CREATE MATERIALIZED VIEW](materialized-view-create-sql-command.md)。

ALTER SORTKEY AUTO  
一个用于将目标关系的排序键更改为或添加到 AUTO 的子句。临时表不支持 ALTER SORTKEY AUTO。  
当您将排序键更改为 AUTO 时，Amazon Redshift 会保留关系的现有排序键。  
如果 Amazon Redshift 确定新的排序键将提高查询的性能，那么 Amazon Redshift 将来可能会更改关系的排序键。  
有关 SORTKEY AUTO 的更多信息，请转至 [CREATE MATERIALIZED VIEW](materialized-view-create-sql-command.md)。  
要查看关系的排序键，请查询 SVV\$1TABLE\$1INFO 系统目录视图。有关更多信息，请转至 [SVV\$1TABLE\$1INFO](r_SVV_TABLE_INFO.md)。要查看 Amazon Redshift Advisor 对关系的建议，请查询 SVV\$1ALTER\$1TABLE\$1RECOMMENDATIONS 系统目录视图。有关更多信息，请转至 [SVV\$1ALTER\$1TABLE\$1RECOMMENDATIONS](r_SVV_ALTER_TABLE_RECOMMENDATIONS.md)。要查看 Amazon Redshift 所采取的操作，请查询 SVL\$1AUTO\$1WORKER\$1ACTION 系统目录视图。有关更多信息，请转至 [SVL\$1AUTO\$1WORKER\$1ACTION](r_SVL_AUTO_WORKER_ACTION.md)。

ALTER SORTKEY NONE  
用于移除目标关系的排序键的子句。  
如果排序键以前被定义为 AUTO，则关系不再是自动表优化的候选项。

ROW LEVEL SECURITY \$1 ON \$1 OFF \$1 [ CONJUNCTION TYPE \$1 AND \$1 OR \$1 ] [ FOR DATASHARES ]  
一个对关系开启或关闭行级安全性的子句。  
在为关系开启行级安全性后，您只能读取行级安全策略允许您访问的行。如果没有策略向您授予对关系的访问权限，您将看不到关系中的任何行。只有超级用户和拥有 `sys:secadmin` 角色的用户或角色才能设置 ROW LEVEL SECURITY 子句。有关更多信息，请参阅 [行级别安全性](t_rls.md)。  
+ [ CONJUNCTION TYPE \$1 AND \$1 OR \$1 ] 

  一个允许您为关系选择行级安全策略的联接类型的子句。将多个行级安全策略附加到关系时，可以将这些策略与 AND 或 OR 子句合并。默认情况下，Amazon Redshift 将 RLS 策略与 AND 子句合并。具有 `sys:secadmin` 角色的超级用户、用户或角色可以使用此子句为关系定义行级安全策略的联接类型。有关更多信息，请参阅 [为每个用户组合多个策略](t_rls_combine_policies.md)。
+ FOR DATASHARES

   一个子句，用于确定是否可以通过数据共享访问受 RLS 保护的关系。默认情况下，无法通过数据共享访问受 RLS 保护的关系。使用此子句运行的 ALTER MATERIALIZED VIEW ROW LEVEL SECURITY 命令只会影响关系的数据共享可访问性属性。ROW LEVEL SECURITY 属性未更改。

   如果您允许通过数据共享访问受 RLS 保护的关系，则该关系在使用者端数据共享数据库中没有行级安全性。该关系在生产者端保留其 RLS 属性。

## 示例
<a name="r_ALTER_MATERIALIZED_VIEW-examples"></a>

以下示例启用要自动刷新的 `tickets_mv` 实体化视图。

```
ALTER MATERIALIZED VIEW tickets_mv AUTO REFRESH YES
```