首批通过分布式安全可靠测评,为关键业务系统打造
ALTER MATERIALIZED VIEW
更新时间:2026-07-16 20:01:47
描述
该语句用来修改物化视图属性。
权限要求
执行 ALTER MATERIALIZED VIEW 语句,需要当前用户拥有待操作对象的 ALTER 权限。更多有关 OceanBase 数据库权限的详细介绍,请参见 MySQL 模式下的权限分类。
语法
ALTER MATERIALIZED VIEW [database.]view_name alter_mview_action_list;
alter_mview_action_list:
alter_mview_action [, alter_mview_action ...]
alter_mview_action:
parallel_clause
| REFRESH [nested_refresh_option] [[START WITH expr] [NEXT expr]]
parallel_clause:
NOPARALLEL
| PARALLEL integer
| REFRESH PARALLEL integer
nested_refresh_option:
INDIVIDUAL
| INCONSISTENT
| CONSISTENT
参数说明
| 参数 | 描述 |
|---|---|
| database. | 可选项,指定物化视图所在的数据库。如果省略 database.,则默认物化视图在当前会话连接的数据库中。 |
| view_name | 指定待修改的物化视图的名称。
说明OceanBase 数据库支持使用 |
| alter_mview_action_list | 表示可以对物化视图执行修改的操作列表。可以同时指定多个操作,使用英文逗号(,)分隔。详细介绍可参见下文 alter_mview_action。 |
alter_mview_action
parallel_clause:用于修改物化视图的并行度,取值如下:NOPARALLEL:默认配置,并行度为 1。PARALLEL integer:指定表级并行度,即查询物化视图时的并行度。integer取值为大于等于 1 的整数。REFRESH PARALLEL integer:指定刷新并行度,即物化视图刷新时的刷新并行度。integer取值为大于等于 0 的整数,为 0 时,表示刷新并行度使用系统变量mview_refresh_dop的取值。说明
对于 V4.4.2 版本,
ALTER MATERIALIZED VIEW语句从 V4.4.2 BP2 版本开始支持通过指定REFRESH PARALLEL integer修改刷新并行度。
示例如下:
设置查询物化视图时的并行度。
ALTER MATERIALIZED VIEW mv1 PARALLEL 5;设置物化视图的刷新并行度。
ALTER MATERIALIZED VIEW mv1 REFRESH PARALLEL 3;
REFRESH [nested_refresh_option] [[START WITH expr] [NEXT expr]]:用于修改嵌套物化视图刷新策略或物化视图的后台刷新任务的时间周期。nested_refresh_option:可选项,表示嵌套物化视图的刷新策略。INDIVIDUAL:默认值,表示独立刷新。INCONSISTENT:表示级联非一致性刷。CONSISTENT:表示级联一致性刷新。
示例如下:
obclient> ALTER MATERIALIZED VIEW mv1 REFRESH INDIVIDUAL;obclient> ALTER MATERIALIZED VIEW mv1 REFRESH INCONSISTENT;obclient> ALTER MATERIALIZED VIEW mv1 REFRESH CONSISTENT;[[START WITH expr] [NEXT expr]]:修改物化视图的后台刷新任务的时间周期。[START WITH expr]:可选项,表示刷新计划开始的时间表达式。[NEXT expr]:可选项,表示下一次刷新的时间表达式。注意
- 如果使用了
NEXT子句,刷新计划的时间表达式必须设定在未来的时间点,否则会引发错误。 - 如果期望物化视图周期性自动调度刷新任务,请通过定义
NEXT来设置调度周期。
- 如果使用了
建议使用
sysdate()表示当前时区时间,时间表达式示例如下:START WITH sysdate() NEXT sysdate() + INTERVAL 1 DAY上述子句表示从当前时间(
sysdate())开始,每隔 1 天刷新一次物化视图。示例如下:
obclient> ALTER MATERIALIZED VIEW mv1 REFRESH START WITH sysdate();仅设置刷新间隔:
obclient> ALTER MATERIALIZED VIEW mv1 REFRESH NEXT sysdate() + INTERVAL 1 DAY;同时设置开始时间和刷新间隔:
obclient> ALTER MATERIALIZED VIEW mv1 REFRESH START WITH sysdate() NEXT sysdate() + INTERVAL 1 DAY;