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

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

示例三:修改物化视图属性,调整物化视图刷新 Timeout 为一小时(默认)。

ALTER MATERIALIZED VIEW mv1 SET ("session.query_timeout" = "3600");

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

ALTER MATERIALIZED VIEW order_mv ACTIVE;

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

ALTER MATERIALIZED VIEW order_mv SWAP WITH order_mv1;

示例六:为物化视图刷新开启 Profile(默认开启)。

ALTER MATERIALIZED VIEW mv1 SET ("session.enable_profile" = "true");

示例七:为物化视图刷新开启中间结果落盘(自 v3.1 起默认开启),并设置落盘模式为 force

-- 为物化视图刷新开启中间结果落盘。
ALTER MATERIALIZED VIEW mv1 SET ("session.enable_spill" = "true");
-- 设置落盘模式为 `force`。
ALTER MATERIALIZED VIEW mv1 SET ("session.spill_mode" = "force");

示例八:调整 Optimizer Timeout 为 30 秒(自 v3.3 起为默认值),适用于物化视图查询包含外表或多个 Join。

ALTER MATERIALIZED VIEW mv1 SET ("session.new_planner_optimize_timeout" = "30000");

示例九:调整物化视图查询改写 Staleness 时间为 600 秒。

ALTER MATERIALIZED VIEW mv1 SET ("mv_rewrite_staleness_second" = "600");