跳到主要内容
版本:Latest-3.2

ALTER MATERIALIZED VIEW

功能

此 SQL 语句可以:

  • 变更异步物化视图的名称

  • 变更异步物化视图的刷新策略

  • 变更异步物化视图的状态为 Active 或 Inactive

  • 原子替换异步物化视图

  • 变更异步物化视图的属性

    您可以使用此 SQL 语句变更异步物化视图的以下属性:

    • partition_ttl_number
    • partition_refresh_number
    • resource_group
    • auto_refresh_partitions_limit
    • excluded_trigger_tables
    • mv_rewrite_staleness_second
    • unique_constraints
    • foreign_key_constraints
    • colocate_with
    • 所有 Session 变量属性。有关 Session 变量,详细信息请见 系统变量
提示
  • 该操作需要对应物化视图的 ALTER 权限。请参考 GRANT 为用户赋权。
  • ALTER MATERIALIZED VIEW 不支持直接修改构建物化视图的查询语句。您可以重新构建物化视图,并通过 ALTER MATERIALIZED VIEW SWAP WITH 将其与原始物化视图替换。

语法

ALTER MATERIALIZED VIEW [db_name.]<mv_name> 
{ RENAME [db_name.]<new_mv_name>
| REFRESH <new_refresh_scheme_desc>
| ACTIVE | INACTIVE
| SWAP WITH [db_name.]<mv2_name>
| SET ( "<key>" = "<value>"[,...]) }

参数

参数必选说明
mv_name待变更的物化视图的名称。
new_refresh_scheme_desc新的刷新机制,详细信息请见 SQL 参考 - CREATE MATERIALIZED VIEW - 参数
new_mv_name新的物化视图的名称。
ACTIVE将物化视图的状态设置为 Active。如果物化视图的基表发生更改,例如被删除后重新创建,StarRocks 会自动将该物化视图的状态设置为 Inactive,以避免原始元数据与更改后的基表不匹配的情况。状态为 Inactive 的物化视图无法用于查询加速或改写。更改基表后,您可以使用此 SQL 将该物化视图的状态设置为 Active。
INACTIVE将物化视图的状态设置为 Inactive。Inactive 状态的物化视图无法被刷新,但您仍然可以将其作为表直接查询。
SWAP WITH同另一物化视图进行原子替换。替换前,StarRocks 会进行必要的一致性检查。
key待变更的属性的名称,详细信息请见 SQL 参考 - CREATE MATERIALIZED VIEW - 参数
说明
如需更改物化视图的 Session 变量属性,则必须为 Session 属性添加 session. 前缀,例如,session.query_timeout。您无需为非 Session 属性指定前缀,例如,mv_rewrite_staleness_second
value待变更的属性的值。

示例

示例一:修改物化视图名称

ALTER MATERIALIZED VIEW lo_mv1 RENAME lo_mv1_new_name;

示例二:修改物化视图刷新间隔

ALTER MATERIALIZED VIEW lo_mv2 REFRESH ASYNC EVERY(INTERVAL 1 DAY);

示例三:修改物化视图属性

-- 修改 mv1 的 query_timeout 为 40000 秒。
ALTER MATERIALIZED VIEW mv1 SET ("session.query_timeout" = "40000");
-- 修改 mv1 的 mv_rewrite_staleness_second 为 600 秒。
ALTER MATERIALIZED VIEW mv1 SET ("mv_rewrite_staleness_second" = "600");

示例四:修改物化视图状态为 Active。

ALTER MATERIALIZED VIEW order_mv ACTIVE;

示例五:原子替换物化视图 order_mvorder_mv1

ALTER MATERIALIZED VIEW order_mv SWAP WITH order_mv1;