ALTER MATERIALIZED VIEW
功能描述
修改物化视图属性。物化视图语法仅8.2.1.220及以上集群支持。
注意事项
使用ALTER MATERIALIZED VIEW语句需确保enable_matview设置为on。
语法格式
- 设置是否对物化视图启动查询重写。(当前仅支持文本匹配查询重写)
1 2
ALTER MATERIALIZED VIEW [ IF EXISTS ] { materialized_view_name } [ ENABLE | DISABLE ] QUERY REWRITE;
- 修改物化视图的刷新方式。目前仅支持COMPLETE全量刷新这一种刷新方式。执行物化视图定义的查询语句并更新物化视图。
1 2
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。
1 2
ALTER MATERIALIZED VIEW [ IF EXISTS ] { materialized_view_name } REFRESH [DEFAULT] | [ RESTRICT ] | [ CASCADE FORWARD ] | [ CASCADE BACKWARD ] | [ CASCADE ALL ] ;
- 修改物化视图的所有者。
1 2
ALTER MATERIALIZED VIEW { materialized_view_name } OWNER TO new_owner;
- 设置物化视图的表属性。该语法仅9.1.0.200及以上集群版本支持。
1 2 3
ALTER MATERIALIZED VIEW { materialized_view_name } SET ( {storage_parameter = value} [, ... ] ) | RESET ( storage_parameter [, ... ] )
- 重命名物化视图。
1 2
ALTER MATERIALIZED VIEW [ IF EXISTS ] materialized_view_name RENAME TO new_materialized_view_name;
参数说明
参数 |
描述 |
取值范围 |
---|---|---|
IF EXISTS |
如果指定的物化视图不存在时,返回一个提示而不是错误。 |
- |
materialized_view_name |
需要修改的物化视图的名称。 |
已存在的物化视图名。 |
ENABLE | DISABLE QUERY REWRITE |
是否开启查询重写。
说明:
DWS当前仅支持文本匹配查询重写。 |
默认关闭。 指定ENABLE QUERY REWRITE时,需要设置GUC参数mv_rewrite_rule才能启用物化视图查询重写功能。 |
REFRESH |
修改物化视图的刷新方式。 当基表中的数据发生变化时,需要通过刷新物化视图(REFRESH MATERIALIZED VIEW)更新物化视图中的数据。 |
|
storage_parameter |
设置物化视图的表属性。 支持设置参数:mv_pck_column,bitmap_columns,enable_foreign_table_query_rewrite,excluded_inactive_tables,force_rewrite_timeout,mv_analyze_mode等。 |
更多支持设置的参数可参考参数说明。 |
new_owner |
物化视图的新所有者。 |
已存在的用户名。 |
new_materialized_view_name |
新的物化视图名称。 |
字符串,需符合标识符命名规范。 |
示例
启用物化视图的查询重写。
1 2 3 |
ALTER MATERIALIZED VIEW mv1 ENABLE QUERY REWRITE; NOTICE: REFRESH MATERIALIZED VIEW should be executed to enable query rewrite. ALTER MATERIALIZED VIEW |
修改物化视图的表属性。
1 2 3 |
ALTER MATERIALIZED VIEW mv1 SET (force_rewrite_timeout=100); ALTER MATERIALIZED VIEW mv1 SET (mv_pck_column='col1'); ALTER MATERIALIZED VIEW mv1 SET (enable_foreign_table_query_rewrite = true); |
修改物化视图的刷新时间。
1
|
ALTER MATERIALIZED VIEW mv1 REFRESH START WITH('2025-01-01 15:15:15'::timestamptz) EVERY (interval '60 s'); |