更新时间:2026-05-18 GMT+08:00
分享

全量刷新

全量刷新原理

物化视图的全量刷新借助INSERT OVERWRITE逻辑,实现物化视图SQL的全量重新计算,并进行结果集的物化存储。

全量刷新语法:

1
2
3
4
5
CREATE MATERIALIZED VIEW test_mv1
REFRESH COMPLETE EVERY (interval '01:00:00') --每1小时刷新一次
ENABLE QUERY REWRITE --开启查询重写
WITH(orientation=COLUMN, enable_hstore_opt=ON) --使用列存hstore_opt存储格式
AS Your_Select;

约束限制

因为会重新执行整个SQL语句,因此没有特别的要求,适用性最为广泛。基表既可以是内表、外表或其它物化视图。基表存储格式可以是行存或列存。

物化视图本身的存储格式也没有特别的要求。

对业务影响

  • 刷新时,先从基表查询计算全量的数据写入到临时表中,再维护好索引和统计信息,仅最后临时表与物化视图交换数据文件的瞬间需要对物化视图加排它锁堵塞查询。对查询的影响在毫秒级。
  • 如果刷新时物化视图上有复杂的耗时长的SQL会堵塞全量刷新的交换文件,可以在ddl_select_concurrent_mode中设置INSERT_OVERWRITE终止查询快速完成刷新。并且被杀的查询会自动重试。

适用场景

全量刷新适用于历史数据经常发生变化的批量更新场景,一般为小时级的刷新频率。具体情况根据实际业务复杂度和资源情况确定。

相关文档