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

REFRESH MATERIALIZED VIEW

功能描述

刷新物化视图。该语法仅8.2.1.220及以上集群支持。

刷新方式由CREATE MATERIALIZED VIEW语法中的REFRESH参数指定。目前支持全量刷新或者定时刷新。

注意事项

刷新操作会阻塞基表的DML操作。

语法格式

1
2
REFRESH MATERIALIZED VIEW
{[schema.]materialized_view_name} [ [DEFAULT] | [ RESTRICT ] | [ CASCADE FORWARD ] | [ CASCADE BACKWARD ] | [ CASCADE ALL ] ]

参数说明

表1 REFRESH MATERIALIZED VIEW参数说明

参数

描述

取值范围

materialized_view_name

需要刷新的物化视图的名称。

-

DEFAULT

采用默认的刷新方式。即刷新单个物化视图,若基表未发生变化,不进行刷新操作。

-

RESTRICT

采用强制刷新。不关注基表是否变化,一定会执行刷新操作。

-

CASCADE FORWARD

级联向上刷新。先刷新当前物化视图,再依次刷新依赖此物化视图的嵌套物化视图。刷新方式为默认刷新方式。

-

CASCADE BACKWARD

级联向下刷新。先刷新当前物化视图所依赖的最底层物化视图,再依次刷新底层物化视图依赖的嵌套物化视图,最后刷新当前物化视图。刷新方式为默认刷新方式。

-

CASCADE ALL

级联刷新全部。先执行级联向下刷新,然后执行级联向上刷新。

-

示例

刷新物化视图。

1
REFRESH MATERIALIZED VIEW mv1;

级联向下刷新物化视图。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
CREATE TABLE t1(a int,b int);
CREATE MATERIALIZED VIEW mv1 AS SELECT * FROM t1 where a > 0;
CREATE MATERIALIZED VIEW mv2 AS SELECT * FROM mv1;
INSERT INTO t1 values(1,1),(2,2);
REFRESH MATERIALIZED VIEW mv2 cascade backward; -- 刷新完mv2, mv1数据也进行了更新

SELECT * FROM mv1 ORDER BY 1,2;
 a | b
---+---
 1 | 1
 2 | 2
(2 rows)

SELECT * FROM mv2 ORDER BY 1,2;
 a | b
---+---
 1 | 1
 2 | 2
(2 rows)