StarRocks 4.1:聚焦生产实践,持续降低运维复杂度

高性能分析一直是 StarRocks 的核心优势,但性能本身并不足以保障生产环境的稳定运行。对于大规模部署 StarRocks 的团队而言,尤其是在面向客户的多租户分析场景中,仍然会面临一些常见的运维挑战:

  • 静态数据分布难以适应业务变化: 数据分布策略需要在建表阶段提前确定,当数据规模增长或访问模式发生变化时,容易出现数据倾斜、热点 Tablet 等问题。

  • 数据倾斜问题不断放大: 单个大型租户可能将大量流量集中到少数几个 Tablet 上,从而引发一系列性能和稳定性问题,而问题根因往往难以排查。

  • 修复成本较高: 一旦数据分布设计不合理,往往需要重新导入数据、调整表结构,或同时进行两者。

  • 需要较强的专业知识: 如何选择合适的 Colocation、Bucket 数量和分布键,往往依赖于对系统内部机制的深入理解。

这些问题在实际使用中并不少见,也是用户在生产环境和 PoC(概念验证)过程中最常遇到的问题。很多运维挑战的根源,其实都来自建表阶段的一些配置决策,而随着业务规模增长,这些问题往往会被进一步放大。

StarRocks 4.1 针对这些问题进行了优化,核心能力包括:

  • 自动化多租户数据管理: 启用该功能(通过 enable_range_distribution 开启)后,系统能够根据数据分布的变化,沿排序键(Sort Key)范围自动拆分 Tablet,无需修改 Schema、调整 SQL 或重新导入数据。

  • 大容量 Tablet: 在存算分离架构下,单个 Tablet 实测验证可扩展至约 100 GB,大幅减少 Tablet 数量,降低 FE 元数据管理压力。

  • 存算分离架构下的 Fast Schema Evolution v2: 支持秒级 DDL 操作,且执行时间不受 Tablet 数量或分区数量影响。

  • 缓存可观测性与延迟控制: 提供覆盖集群、表、分区和查询级别的端到端缓存可观测能力,并将相关指标集成至 Audit Log 和 SQL Profile。

  • Iceberg v2/v3 增强支持: 提供更完善的兼容性支持,进一步增强 Partition Evolution 能力,并支持基于 Iceberg 表构建增量物化视图(Incremental Materialized View)。

  • 更多能力增强: 包括递归 CTE(Recursive CTE)、Skew Join v2 优化、窗口函数扩展、存算分离架构下的倒排索引(Inverted Index)等能力增强。

完整功能列表,请参考:https://docs.starrocks.io/releasenotes/release-4.1/

自动多租户数据管理

StarRocks 4.1 引入了动态数据分布机制,用户无需再在建表时预估未来的数据分布情况。这也是本次版本在易用性和可运维性方面最重要的改进之一。

在底层实现上,4.1 为存算分离架构引入了 Tablet 级自动拆分(Automatic Tablet Splitting) 能力。Tablet 不再是固定不变的数据单元:当某个 Tablet 超过预设容量阈值时,系统会自动将其拆分为多个更小的 Tablet。拆分边界基于排序键(Sort Key)生成的范围信息确定,并保证查询正确性。

这一过程在后台自动进行,用户无需参与,无需修改表结构、无需调整用户 SQL,也无需重新导入数据。整个过程无需重写数据,速度快,很轻量,不影响写入和查询。

在实际使用中,建表过程因此变得更加简单。用户不再需要为 DISTRIBUTED BY 配置进行复杂设计,也无需提前预估租户规模增长趋势。系统会在出现数据分布不均衡时自动进行调整,无需人工干预。

在一项基于 200 GB 数据集、32 并发线程的基准测试中,自适应范围分布(Adaptive Range-based Distribution)的吞吐量达到静态哈希分布(Static Hash Distribution)的 1.86 倍 ,同时 P99 延迟从 36.6 秒 降低至 11.5 秒 。关于该项能力的详细测试方法和结果分析,请参阅后续发布的专题技术解读文章。

大容量 Tablet:消除 Bucket 设置不合理带来的性能问题

许多严重的性能问题,都源自不合理的 Bucket 设置。可能是 Bucket 个数过多,或者过少,甚至是 Bucket 数据分布存在倾斜等等,都会导致严重的导入,Compaction和查询的性能问题。

针对这一挑战,StarRocks 4.1 推出了大容量 Tablet 的能力: 单 Tablet 容量提升至约 100 GB: 在存算分离架构下,单个 Tablet 实测验证可扩展至约 100 GB,相较于此前版本实现了显著提升。这个能力带来的好处包括但不限于:

  • 减轻集群 FE 压力 更少的 Tablet 意味着更低的 FE 元数据管理压力,同时减少集群调度与资源管理开销。

  • 减少导入和 C ompaction 的开销: 导入和 Compact 涉及的 Tablet 更少,资源使用方面也会更友好

  • 对非分区 PK 表更加友好。 有些 PK 表因为业务原因无法按时间分区,因此如果数据持续增长,则传统的分桶模式下,无法确定最佳的分桶个数。有了大容量 Tablet 之后,分桶个数更容易确定,再配合动态数据分布机制,用户体验更佳。

大容量 Tablet 代表着 StarRocks 在数据分布管理机制上的一次重要演进。其设计目标是降低系统对 Bucket 配置的敏感度,并缓解因为 Bucket 个数设置不当带来的性能和资源问题。

Fast Schema Evolution

在生产环境中,Schema 变更十分常见。新增字段、调整字段类型都是日常操作。然而,当 DDL 操作的执行时间随着表规模、Tablet 数量或分区数量增长时,原本简单的变更也可能变得复杂。

存算分离架构下的 Fast Schema Evolution v2 在现有能力基础上进一步演进,加列等常见 DDL 操作时仅仅修改 FE 元数据,实现 Schema 变更真秒级完成。

缓存可观测性增强,让查询延迟更加可预测

在存算分离架构中,查询延迟不仅受到执行效率的影响,也与数据访问路径和缓存行为密切相关。缓存效应会放大尾延迟(Tail Latency),并导致不同副本之间出现性能差异。而在高并发场景下,这些问题会变得更加难以分析。

StarRocks 4.1 带来了一系列缓存与延迟相关增强:

  • 查询级和集群级缓存可观测性: 缓存命中率可通过 Audit Log(查询级)、Prometheus BE 指标(集群级)以及 SQL Profile 中的 I/O 指标进行观测。

  • 集成 Audit Log 和 SQL Profile: 缓存相关指标直接集成到现有诊断体系中,而非作为独立监控系统存在。

  • 缓存复制基础能力: 为计算副本之间的受控缓存预热(Cache Warmup)提供基础支持,从而降低扩缩容后的冷启动延迟。

  • 降低缓存放大效应: 减少 Compaction、数据迁移和故障恢复过程中产生的缓存波动。

通过这些改进,运维人员能够更清晰地识别和分析缓存引起的延迟波动。相比单纯追求 Benchmark 中的峰值性能,StarRocks 更关注提升生产环境中延迟表现的可预测性和可诊断性。

更深度的 Iceberg 集成

StarRocks 4.1 在 Lake Analytics 场景下带来了一系列增强,针对以往需要依赖外部工具或额外方案才能实现的能力提供了原生支持。

  • Iceberg 表原生 SQL DELETE

StarRocks 现已支持直接在 Iceberg 表上执行分布式 SQL DELETE 操作,生成符合 Iceberg V2 标准的 Position Delete 文件,并以原子化 Snapshot Commit 的方式提交变更。

用户无需再借助 Spark 作业或自定义脚本,即可完成数据修正、执行数据保留策略(Retention Policy),以及处理 CDC 删除操作。

  • Iceberg Variant 类型支持

Iceberg V3 引入了 Variant 类型,这是一种兼顾 Schema 灵活性与性能的结构化二进制格式,用于取代过去在灵活但性能较低的 JSON 字符串与结构固定的 STRUCT 列之间进行权衡的方式。

StarRocks 4.1 将 Variant 类型直接集成至向量化执行引擎(Vectorized Execution Engine),通过基于偏移量(Offset)的二进制定位方式访问字段数据,避免了 JSON-as-STRING 场景下反复解析带来的额外开销。

  • Iceberg 增量物化视图

传统物化视图的刷新成本通常随着表规模增长而增加。随着数据量持续增长,刷新速度会逐渐下降,从而影响加速效果。

StarRocks 4.1 对 Iceberg 物化视图刷新机制进行了优化,从基于分区的重计算模式升级为基于 Version Range 的增量变更处理(Delta Processing)模式。因此,刷新成本将主要取决于数据变化量,而非历史数据总量。

在一项基于 100 GB 数据集的基准测试中,后续增量刷新相比传统分区级刷新实现了 7 至 30 倍 的性能提升。

更多能力增强

除了重大的架构升级外,4.1 版本还针对分析开发中的常见痛点进行了多项优化,进一步改善使用体验。

  • 存算分离架构下的倒排索引(Beta): 使用内置解析器(Builtin Parser),将倒排索引能力扩展至存算分离部署。后续版本计划支持更多分析器(Analyzer)。

  • Skew Join v2 优化: 支持基于统计信息的倾斜检测,并支持直方图(Histogram)和 NULL 值倾斜感知(NULL-skew Awareness),提升数据倾斜场景下的 Join 性能。

  • 递归 CTE 支持: 支持直接通过 SQL 实现层级查询和图遍历模式。

  • 窗口函数扩展: 支持在窗口表达式中使用 ARRAY 类型。

  • FULL OUTER JOIN 支持 USING 子句: 对于 Join 密集型查询而言,这是一项虽小但有意义的易用性改进。

更详细的 feature 介绍参考:

Release Notes:https://docs.mirrorship.cn/zh/releasenotes/release-4.1/

下载:https://www.mirrorship.cn/zh-CN/download/starrocks