StarRocks 开源三周年

2021 年 9 月 8 日,StarRocks 开源社区诞生。三年间,StarRocks 在 GitHub 上收获了 8700+ Stars,产品共迭代发布了 140 余个版本,420+ 家市值超过 10 亿美元的头部用户在生产环境中上线运行。

目前,StarRocks 社区已有超过 420 位贡献者。镜舟科技作为社区的中坚力量,推动社区持续迭代,同时越来越多的业界知名企业如阿里云、腾讯、火山引擎等也参与了 StarRocks 社区的开发,助力 StarRocks 持续领先业界。

StarRocks Education

值此 StarRocks 开源三周年之际,镜舟科技隆重推出 StarRocks Education,这是一个由 StarRocks 资深专家团队精心打造的在线培训和认证平台。首批上线的是面向初学者的 StarRocks Certified Associate(SRCA)课程,本系列课程主要涵盖 StarRocks 的发展历程、应用场景、架构以及基础的使用和运维等内容。

开启 SR 学习之旅:

https://www.mirrorship.cn/zh-CN/training/home

StarRocks 3.3.4 发版

9 月 30 日,StarRocks v3.3.4 发布,以下内容节选自发版说明。

行为变更

  • 更改外表物化视图的默认副本数,从默认 1 副本改为遵循 FE 参数 default_replication_num 的值(默认值:3)。#50931

新增功能

  • 支持在 List Partition 的表上创建异步物化视图。 #46680 #46808
  • List Partition 表支持 Nullable 分区列。 #47797
  • 支持通过 DESC FILES() 查看外部文件 Schema 信息。#50527
  • 支持通过 SHOW PROC '/replications' 查看数据复制任务指标。#50483

功能优化

  • 优化存算分离架构下 TRUNCATE TABLE 的数据回收速度。#49975
  • CTE 算子支持中间结果落盘。#47982
  • 支持自适应分阶段调度,缓解复杂查询导致的 OOM。#47868
  • 在一些特定场景下支持了 STRING 类型的 date 或 datetime 列的查询下推。#50643
  • 支持基于常量的半结构化数据上计算 COUNT DISTINCT。#48273
  • 新增 FE 参数 lake_enable_balance_tablets_between_workers,用于启用存算分离表的 Tablet 均衡。#50843
  • 优化生成列的改写能力。#50398
  • Partial Update 支持自动填充默认值为 CURRENT_TIMESTAMP 的列的值。#50287

异步物化视图

自 v2.4 起,StarRocks 支持异步物化视图。异步物化视图旨在加速在 StarRocks 内部或数据湖中基于多个大表执行复杂查询,通常涉及多表之间数十亿行数据的关联和聚合。查询的频率越高或查询语句越复杂,性能增益就会越很明显。此外,您还可以通过异步物化视图对数据仓库进行建模。

相较于同步物化视图,异步物化视图支持多表关联以及更加丰富的聚合算子。异步物化视图可以通过手动调用或定时任务的方式刷新,并且支持刷新部分分区,可以大幅降低刷新成本。除此之外,异步物化视图支持多种查询改写场景,实现自动、透明查询加速。

示例:在带有 Nullable 分区列的 List Partition 表上创建异步物化视图

CREATE TABLE goods(
 item_id1 INT,
 item_name STRING,
 price FLOAT
) DISTRIBUTED BY HASH(item_id1);

INSERT INTO goods VALUES
 (1001,"apple",6.5),
 (1002,"pear",8.0),
 (1003,"potato",2.2);
 
CREATE TABLE order_list(
 order_id INT,
 client_id INT,
 item_id2 INT,
 order_date DATE
) DUPLICATE KEY(order_id) PARTITION BY LIST (order_id) (
PARTITION p1 VALUES IN ('10001'), 
PARTITION p2 VALUES IN ('10002'), 
PARTITION p3 VALUES IN ('10003'), 
PARTITION p4 VALUES IN (NULL)
)
DISTRIBUTED BY RANDOM;

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")
 (NULL, NULL, NULL, NULL);

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;

手动刷新物化视图。

-- 异步调用刷新任务。
REFRESH MATERIALIZED VIEW order_mv;
-- SR v3.1 开始,支持同步调用刷新任务。
REFRESH MATERIALIZED VIEW order_mv WITH SYNC MODE;

查看异步物化视图信息。(注:该命令当前仅针对异步物化视图生效。)

SHOW MATERIALIZED VIEWS
FROM mydb;

相关阅读

Have a nice day ~


🌻 往期精彩 ▼


-- / END / --

👉 这里可以找到我

如果这篇文章为你带来了灵感或启发,就请帮忙点『』or『在看』or『转发』吧,感谢!ღ( ´・ᴗ・` )~

本文由mdnice多平台发布


严少安
6 声望3 粉丝

DBA