
# ALTER MATERIALIZED VIEW
#### 功能描述
修改物化视图属性。物化视图语法仅8.2.1.220及以上集群支持。
#### 注意事项
使用ALTER MATERIALIZED VIEW语句需确保[enable_matview](https://support.huaweicloud.com/devg-dws/dws_04_0931.html#section3)设置为on。
#### 语法格式
- 设置是否对物化视图启动查询重写。
  ```
  ALTER MATERIALIZED VIEW [ IF EXISTS ] { materialized_view_name }
      [ ENABLE | DISABLE ] QUERY REWRITE;
  ```
  

- 修改物化视图的刷新方式。目前仅支持COMPLETE全量刷新这一种刷新方式。执行物化视图定义的查询语句并更新物化视图。
  ```
  ALTER MATERIALIZED VIEW [ IF EXISTS ] { materialized_view_name }
      REFRESH [ [DEFAULT] | [ RESTRICT ] | [ CASCADE FORWARD ] | [ CASCADE BACKWARD ] | [ CASCADE ALL ] ] [ COMPLETE ] [ ON DEMAND ] [ [ START WITH (timestamptz) ] | [ EVERY (interval) ] ];
  ```
  - REFRESH ON DEMAND，表示手动按需刷新。
  
  - START WITH，指定首次刷新时间。
  
  - EVERY指定刷新间隔，根据指定的时间定时刷新，支持MONTH、DAY、HOUR、MINUTE及SECOND。
   
- 修改后台异步刷新物化视图的刷新方式，仅针对后台异步刷新的物化视图。该语法仅9.1.0.200及以上集群版本支持。具体内容参考[REFRESH MATERIALIZED VIEW](https://support.huaweicloud.com/sqlreference-dws/dws_06_0361.html)。
  ```
  ALTER MATERIALIZED VIEW [ IF EXISTS ] { materialized_view_name }
      REFRESH [DEFAULT] | [ RESTRICT ] | [ CASCADE FORWARD ] | [ CASCADE BACKWARD ] | [ CASCADE ALL ] ;
  ```
  
- 修改物化视图的所有者。
  ```
  ALTER MATERIALIZED VIEW { materialized_view_name }
      OWNER TO new_owner;
  ```
  

- 设置物化视图的表属性。该语法仅9.1.0.200及以上集群版本支持。
  ```
  ALTER MATERIALIZED VIEW { materialized_view_name }
      SET ( {storage_parameter = value} [, ... ] )
      | RESET ( storage_parameter [, ... ] )
  ```
  

- 重命名物化视图。不支持跨schema对物化视图进行重命名操作。重命名物化视图时原物化视图名materialized_view_name可指定模式名，new_materialized_view_name不能指定模式名。
  ```
  ALTER MATERIALIZED VIEW [ IF EXISTS ] materialized_view_name
      RENAME TO new_materialized_view_name;
  ```
  
 
#### 参数说明
表1ALTER MATERIALIZED VIEW参数说明 
| 参数                              | 描述                                                                                                                                                                                                  | 取值范围                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
|:---|:---|:---|
| IF EXISTS                       | 如果指定的物化视图不存在时，返回一个提示而不是错误。                                                                                                                                                                          | -                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| materialized_view_name          | 需要修改的物化视图的名称。                                                                                                                                                                                       | 已存在的物化视图名。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| ENABLE \| DISABLE QUERY REWRITE | 是否开启查询重写。                                                                                                                                                                                           | 默认关闭。 指定ENABLE QUERY REWRITE时，需要设置GUC参数[mv_rewrite_rule](https://support.huaweicloud.com/devg-dws/dws_04_0936.html#section40)才能启用物化视图查询重写功能。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| REFRESH                         | 修改物化视图的刷新方式。 当基表中的数据发生变化时，需要通过刷新物化视图（REFRESH MATERIALIZED VIEW）更新物化视图中的数据。                                                                           | - 刷新方式：DEFAULT默认刷新，RESTRICT 强制刷新。仅创建后台异步刷新的物化视图可以指定。  - 刷新方向：级联嵌套使用物化视图时的刷新方向，FORWARD向上刷新，BACKWARD向下刷新，ALL 全部都刷。仅创建后台异步刷新的物化视图可以指定。具体参考[REFRESH MATERIALIZED VIEW](https://support.huaweicloud.com/sqlreference-dws/dws_06_0361.html)。  - 目前只支持COMPLETE全量刷新这一种刷新方式。执行物化视图定义的查询语句并更新物化视图。  - 刷新触发方式。 ON DEMAND：手动按需刷新。 START WITH (timestamptz) \| EVERY (interval)：定时刷新。START WITH指定首次刷新时间，EVERY 指定刷新间隔，根据指定的时间定时刷新，支持MONTH、DAY、HOUR、MINUTE及SECOND。    |
| storage_parameter               | 设置物化视图的表属性。 支持设置参数：mv_pck_column，bitmap_columns，enable_foreign_table_query_rewrite，excluded_inactive_tables，force_rewrite_timeout，mv_analyze_mode等。 | 更多支持设置的参数可参考[参数说明](https://support.huaweicloud.com/sqlreference-dws/dws_06_0357.html#ZH-CN_TOPIC_0000001811634773__section1561019065710)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| new_owner                       | 物化视图的新所有者。                                                                                                                                                                                          | 已存在的用户名。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| new_materialized_view_name      | 新的物化视图名称。                                                                                                                                                                                           | 字符串，需符合[标识符命名规范](https://support.huaweicloud.com/sqlreference-dws/dws_06_0007.html#ZH-CN_TOPIC_0000001811634529__section1475018612353)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   
#### 示例
开启物化视图功能。
```
set enable_matview = on;
```
创建基表，并向基表插入数据。
```
DROP TABLE IF EXISTS t1 CASCADE;
CREATE TABLE t1 (a int, b int) 
WITH (ORIENTATION = COLUMN )
DISTRIBUTE BY HASH(a);
INSERT INTO t1 SELECT x,x FROM generate_series(1,10) x;
```
创建指定列存方式的物化视图：
```
CREATE MATERIALIZED  VIEW mv1 WITH(orientation = column, enable_foreign_table_query_rewrite = false ) AS SELECT * FROM t1;
```
启用物化视图的查询重写。
```
ALTER MATERIALIZED VIEW mv1 ENABLE QUERY REWRITE;
```
修改物化视图的表属性。
```
ALTER MATERIALIZED VIEW mv1 SET (force_rewrite_timeout=100);
ALTER MATERIALIZED VIEW mv1 SET (mv_pck_column='b');
ALTER MATERIALIZED VIEW mv1 SET (enable_foreign_table_query_rewrite = true);
```
修改物化视图的刷新时间。
```
ALTER MATERIALIZED VIEW mv1 REFRESH START WITH('2025-01-01 15:15:15'::timestamptz) EVERY (interval '60 s');
```
#### 相关链接
[CREATE MATERIALIZED VIEW](https://support.huaweicloud.com/sqlreference-dws/dws_06_0357.html)，[DROP MATERIALIZED VIEW](https://support.huaweicloud.com/sqlreference-dws/dws_06_0360.html)，[REFRESH MATERIALIZED VIEW](https://support.huaweicloud.com/sqlreference-dws/dws_06_0361.html)
