StarRocks version 3.4
3.4.0 RC-01
发布日期:2025 年 1 月 13 日
数据湖分析
- 优化了针对 Iceberg V2 的查询性能:通过减少对 Delete-file 的重复读取,提升了查询性能并降低了内存使用量。
- 支持 Delta Lake 表的列映射功能,允许查询经过 Delta Schema Evolution 的 Delta Lake 数据。
- Data Cache 相关优化:
- 引入了分段 LRU (SLRU) 缓存淘汰策略,有效防止偶发大查询导致的缓存污染,提高缓存命中率,减少查询性能波动。在有大查询污染的模拟测试中,基于 SLRU 的查询性能能提升 70% 至数倍。
- 优化了 Data Cache 的自适应 I/O 策略。系统会根据缓存磁盘的负载和性能,自适应地将部分查询请求路由到远端存储,从而提升整体访问吞吐能力。
- 统一了存算分离架构和数据湖查询场景中使用的 Data Cache 实例,以及相关的参数和指标,简化配置,并提升资源使用率。
- 支持通过查询自动触发 ANALYZE 任务自动收集外部表统计信息,相较于元数据文件,可提供更准确的 NDV 信息,从而优化查询计划并提升查询性能。
性能提升与查询优化
- [Experimental] 初步支持 Query Feedback 功能,用于慢查询的自动优化。系统将收集慢查询的执行详情,自动分析查询计划中是否存在需要调优的地方,并生成专属的 Tuning Guide。当后续相同查询生成相同的 Bad Plan 时,系统会基于先前生成的 Tuning Guide 局部调优该 Query Plan。
- [Experimental] 支持 Python UDF,相较于 Java UDF 提供了更便捷的函数自定义能力。
存算分离增强
- 支持 Query Cache,对齐存算一体架构。
- 支持同步物化视图,对齐存算一体架构。
存储引擎
- 统一多种分区方式为表达式分区,支持多级分区,每级分区均可为任意表达式。
数据导入
- INSERT OVERWRITE 新增 Dynamic Overwrite 语义,启用后,系统将根据导入的数据自动创建分区或覆盖对应的现有分区,导入不涉及的分区不会被清空或删除,适用于恢复特定分区数据的场景 。
- 优化了 INSERT from FILES 导入,使其可以基本取代 Broker Load 成为首选导入方式:
- FILES 支持 LIST 远程存储中的文件,并提供文件的基本统计信息。
- INSERT 支持按名称匹配列,特别适用于导入列很多且列名相同的数据。(默认按位置匹配列。)
- INSERT 支持指定 PROPERTIES,与其他导入方式保持一致。用户可通过指定
strict_mode
、max_filter_ratio
和timeout
来控制数据导入的行为和质量。 - INSERT from FILES 支持将目标表的 Schema 检查下推到 FILES 的扫描阶段,从而更准确地推断源数据 Schema。
- FILES 支持合并不同 Schema 的文件。Parquet 和 ORC 文件基于列名合并,CSV 文件基于列位置(顺序)合并。对于不匹配的列,用户可通过指定
fill_mismatch_column_with
属性选择填充 NULL 值或报错。 - FILES 支持从 Parquet 文件推断 STRUCT 类型数据。(在早期版本中,STRUCT 数据被推断为 STRING 类型。)
其他
- 优化 BE 和 CN 的优雅退出流程,将退出过程中的 BE 或 CN 节点状态展示为
SHUTDOWN
。 - 优化日志打印,避免占用过多磁盘空间。
降级说明
- 集群只可从 v3.4.0 降级至 v3.3.9 或更高版本。