doris物化视图

444 阅读2分钟

image.png 简单来说,同步物化视图是单表的,数据同步更新,维护代价小。异步物化视图是多表的,数据异步刷新,因为刷新的有一些代价,所以也需要根据场景来判断最适合的 异步物化视图按照设置的刷新规则进行刷新,对于创建具有分区的异步物化视图,目前可以做到分区级别的增量刷新,不分区的异步物化视图每次是全量刷新。 目前异步物化视图的刷新主要通过 insert overwrite select 来实现,使用 REFRESH ASYNC 基表每次变动物化视图就刷新一次,如果异步物化视图没有设置分区或者单个分区数据量很大,当基表实时导入频繁变动,那么就会频繁触发物化视图刷新,刷新任务压力会很大,基表实时导入数据量大的场景推荐使用 ASYNC [START (<start_time>)] EVERY(INTERVAL <interval>) : 定时刷新模式 或 MANUAL : 手动刷新模式 tech.qimao.com/starrockszh…

创建物化视图

CREATE MATERIALIZED VIEW order_mv 
DISTRIBUTED BY HASH(`order\_id`) REFRESH ASYNC 
START('2022-09-01 10:00:00') 
EVERY (interval 1 day)AS 
SELECT order_list.order_id,sum(goods.price) as total 
FROM order_list 
INNER JOIN goods 
ON goods.item_id1 = order_list.item_id2 
GROUP BY order_id;`
```

Notice:

-   创建异步物化视图时必须至少指定分桶和刷新策略其中之一。
-   您可以为异步物化视图设置与其基表不同的分区和分桶策略,但异步物化视图的分区列和分桶列必须在查询语句中。
-   异步物化视图支持分区上卷。例如,基表基于天做分区方式,您可以设置异步物化视图按月做分区。
-   异步物化视图暂不支持使用 List 分区策略,亦不支持基于使用 List 分区的基表创建。
-   创建物化视图的查询语句不支持非确定性函数,其中包括 rand()、random()、uuid() 和 sleep()。
-   异步物化视图支持多种数据类型。
-   默认情况下,执行 CREATE MATERIALIZED VIEW 语句后,StarRocks 将立即开始刷新任务,这将会占用一定系统资源。
如需推迟刷新时间,请添加 REFRESH DEFERRED 参数。  
-   异步物化视图刷新机制
-   目前,StarRocks 支持两种 ON DEMAND 刷新策略,即异步刷新(ASYNC)和手动刷新(MANUAL)。
-   在此基础上,异步物化视图支持多种刷新机制控制刷新开销并保证刷新成功率: