更新时间:2026-01-06 GMT+08:00
配置StarRocks异步物化视图查询
相较于同步物化视图,异步物化视图支持多表关联以及更丰富的聚合算子。异步物化视图可以通过手动调用或定时任务的方式刷新,并且支持刷新部分分区;还支持多种查询改写场景,实现自动、透明查询加速。
异步物化视图使用场景如下:
- 加速重复聚合查询
- 周期性多表关联查询
- 数仓分层
- 湖仓加速
前提条件
- 创建弹性云服务器,请参考购买ECS章节。
- 已创建StarRocks集群,集群运行正常。
- 已安装MySQL客户端。
使用限制
- 创建异步物化视图时必须指定分桶或刷新策略。
- 可以为异步物化视图设置与其基表不同的分区和分桶策略,但异步物化视图的分区列和分桶列必须在查询语句中。
创建异步物化视图
- 连接StarRocks集群。具体方式请参见手动安装MySQL客户端。
./mysql -uadmin -ppassword -h集群内网地址 -P9030
- 在Default Catalog中创建两张基表,并插入数据。
- 创建数据库。
create db_name;
- 使用数据库。
use db_name;
- 创建表goods并插入数据:
CREATE TABLE goods( item_id1 INT comment "产品 ID", item_name STRING comment "产品名称", price FLOAT comment "产品价格" ) DISTRIBUTED BY HASH(item_id1);
INSERT INTO goods VALUES (1001,"apple",6.5),(1002,"pear",8.0),(1003,"potato",2.2);
- 创建表order_list并插入数据。
CREATE TABLE order_list( order_id INT comment "订单 ID", client_id INT comment "客户 ID", item_id2 INT comment "产品 ID", order_date DATE ) DISTRIBUTED BY HASH(order_id);
INSERT INTO order_list VALUES (10001,101,1001,"2022-03-13"), (10001,101,1002,"2022-03-13"), (10002,103,1002,"2022-03-13"), (10002,103,1003,"2022-03-14"), (10003,102,1003,"2022-03-14"), (10003,102,1001,"2022-03-14");
- 创建数据库。
- 查询数据。
SELECT 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;

- 创建异步物化视图。根据查询语句,于表goods和表order_list创建一个“以订单ID为分组,对订单中所有商品价格求和”的异步物化视图,并设定其刷新方式为ASYNC,每天自动刷新。
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; - 查询异步物化视图是否创建成功。
SELECT * FROM order_mv;

异步物化视图常用命令
- 手动刷新异步物化视图。创建异步物化视图后,视图中的数据仅反映创建时刻基表的状态;当基表中的数据发生变化时,需要通过刷新异步物化视图更新数据变化。
- 异步调用刷新任务。
REFRESH MATERIALIZED VIEW order_mv;
- 同步调用刷新任务。
REFRESH MATERIALIZED VIEW order_mv WITH SYNC MODE;
- 异步调用刷新任务。
- 查看异步物化视图。
- 查看当前数据仓库内的所有异步物化视图。
SHOW MATERIALIZED VIEWS\G;
- 查看指定的异步物化视图
SHOW MATERIALIZED VIEWS WHERE NAME = "order_mv"\G;

- 通过名称匹配查看异步物化视图。
SHOW MATERIALIZED VIEWS WHERE NAME LIKE "order%"\G;
- 通过Information Schema中的系统元数据表“materialized_views”查看所有异步物化视图。
SELECT * FROM information_schema.materialized_views\G;
- 查看当前数据仓库内的所有异步物化视图。
- 查看异步物化视图的创建语句。
SHOW CREATE MATERIALIZED VIEW order_mv;

- 删除异步物化视图。
DROP MATERIALIZED VIEW order_mv;
父主题: StarRocks物化视图