更新时间:2025-08-04 GMT+08:00

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;
    

参数说明

表1 ALTER MATERIALIZED VIEW参数说明

参数

描述

取值范围

IF EXISTS

如果指定的物化视图不存在时,返回一个提示而不是错误。

-

materialized_view_name

需要修改的物化视图的名称。

已存在的物化视图名。

ENABLE | DISABLE QUERY REWRITE

是否开启查询重写。

说明:

DWS当前仅支持文本匹配查询重写。

默认关闭。

指定ENABLE QUERY REWRITE时,需要设置GUC参数mv_rewrite_rule才能启用物化视图查询重写功能。

REFRESH

修改物化视图的刷新方式。

当基表中的数据发生变化时,需要通过刷新物化视图(REFRESH MATERIALIZED VIEW)更新物化视图中的数据。

  • 刷新方式:DEFAULT默认刷新,RESTRICT 强制刷新。仅创建后台异步刷新的物化视图可以指定。
  • 刷新方向:级联嵌套使用物化视图时的刷新方向,FORWARD向上刷新,BACKWARD向下刷新,ALL 全部都刷。仅创建后台异步刷新的物化视图可以指定。具体参考REFRESH MATERIALIZED VIEW
  • 目前只支持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等。

更多支持设置的参数可参考参数说明

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');