StarRocks 3.0 版本发布说明深度解读:存算分离架构、存储与查询引擎的演进(v3.0.0–v3.0.9)
【免费下载链接】starrocksThe world's fastest open query engine for sub-second analytics both on and off the data lakehouse. With the flexibility to support nearly any scenario, StarRocks provides best-in-class performance for multi-dimensional analytics, real-time analytics, and ad-hoc queries. A Linux Foundation project.项目地址: https://gitcode.com/GitHub_Trending/st/starrocks
本文基于 StarRocks 仓库中的官方发布说明文档 docs/en/release_notes/release-3.0.md,系统梳理 3.0 系列从 3.0.0 到 3.0.9 的完整功能演进:以 3.0.0 GA 引入的存算分离(shared-data)架构为主线,覆盖存储引擎、数据湖分析、RBAC 权限体系、物化视图与查询引擎的重要改进,并结合当前仓库源码(FE 配置、BE 配置、会话变量与聚合函数实现)逐项验证各参数的定义与默认值,帮助你在升级、回退和日常运维中做出有依据的技术决策。
1. 3.0.0 GA:奠定存算分离架构的基座版本
发布日期:2023 年 4 月 28 日。3.0.0 是 StarRocks 3.0 系列的首个 GA 版本,也是整个系列的技术分水岭:它首次引入存算分离架构,同时完成了权限体系(RBAC)、物化视图改写能力、Presto/Trino 方言兼容等多条产品线的重大升级。
1.1 系统架构:存储与计算解耦(shared-data)
3.0 版本支持将数据持久化到 S3 兼容的对象存储,从而获得三个核心收益:
- 资源隔离:计算节点(BE/CN)与存储介质解耦,可独立扩缩容;
- 降低成本:存储成本从本地盘转向对象存储;
- 弹性伸缩:计算资源可按负载快速伸缩。
本地磁盘被用作热数据缓存(Cache Data),从源码结构和官方描述看,当本地磁盘缓存命中时,新存算分离架构的查询性能与经典存算一体(shared-nothing)架构相当。上图即为两种集群形态的架构对比:左侧 Classic Cluster(Shared-nothing)中每个 BE 同时承担执行引擎与存储引擎、持有 Local Data;右侧 Elastic Cluster(Shared-data)中 BE 仅持有 Cache Data,数据统一落到 S3/HDFS。
1.2 存储引擎与数据接入(3.0.0)
- 支持
AUTO_INCREMENT属性,提供全局唯一 ID,简化数据管理; - 支持自动分区(Automatic Partitioning)与分区表达式(Partitioning Expressions),让分区创建更易用、更灵活;
- 主键表(Primary Key Table)支持更完整的
UPDATE与DELETE语法,包括 CTE 和多表引用; - 为 Broker Load 和 INSERT INTO 作业新增Load Profile,可通过 load profile 查看加载作业详情,用法与分析查询 Profile 相同。
1.3 数据湖分析(3.0.0)
- 【Preview】支持 Presto/Trino 兼容方言:Presto/Trino 的 SQL 可被自动改写为 StarRocks 的 SQL 模式,通过系统变量
sql_dialect控制(3.0.4 起进一步支持trino方言下表别名的不区分大小写); - 【Preview】支持 JDBC Catalog,可对 MySQL 等外部库建外部表;
- 支持使用
SET CATALOG在当前会话中手动切换 Catalog。
1.4 权限与安全:全新 RBAC 权限体系
- 提供具备完整 RBAC 能力的新权限系统,支持角色继承与默认角色;
- 提供更丰富的权限管理对象和更细粒度的权限;
- 新增权限相关 SQL 语句:
SET DEFAULT ROLE、SET ROLE、SHOW ROLES、SHOW USERS。
1.5 查询引擎(3.0.0)
- 更多涉及 Join 的查询可以享受查询缓存(Query Cache),例如新增支持 Broadcast Join 与 Bucket Shuffle Join 场景;
- 支持全局 UDF(Global UDFs);
- 动态自适应并行度:系统可自动调整
pipeline_dop参数以匹配查询并行度。
1.6 SQL 参考新增能力(3.0.0)
除权限语句外,3.0.0 还新增了一批函数能力:
- 半结构化数据分析函数:
map_apply、map_from_arrays; array_agg支持ORDER BY;- 窗口函数
LEAD/LAG支持IGNORE NULLS; - 字符串函数:
replace、hex_decode_binary、hex_decode_string; - 加密函数:
base64_decode_binary、base64_decode_string; - 数学函数:
sinh、cosh、tanh; - 实用函数:
current_role。
1.7 改进汇总(3.0.0)
部署
- 更新了 Docker 镜像及相关 Docker 部署文档至 3.0 版本。
存储引擎与数据接入
- 数据接入支持更多 CSV 参数:
SKIP_HEADER、TRIM_SPACE、ENCLOSE、ESCAPE(适用于 Stream Load、Broker Load、Routine Load); - 主键表中主键与排序键解耦,建表时可在
ORDER BY中单独指定排序键; - 优化了主键表在大批量写入、部分列更新、持久化主键索引等场景下的内存占用;
- 支持创建异步 INSERT 任务(
SUBMIT TASK)。
物化视图
- 改写能力优化:支持 View Delta Join、Outer Join、Cross Join 的改写,优化了带分区的 Union 改写;
- 构建能力增强:支持 CTE、
select *、Union; - 优化
SHOW MATERIALIZED VIEWS返回信息; - 支持批量添加 MV 分区,提升 MV 构建时加分区效率。
查询引擎
- 所有算子均已支持Pipeline 引擎,非 Pipeline 代码将在后续版本移除;
- 改进大查询定位(Big Query Positioning)并新增大查询日志,
SHOW PROCESSLIST支持查看 CPU 与内存信息; - 优化 Outer Join Reorder;
- 优化 SQL 解析阶段的错误提示,提供更准确的错误定位。
数据湖分析
- 优化元数据统计收集;
- 支持使用
SHOW CREATE TABLE查看外部 Catalog(Hive、Iceberg、Hudi、Delta Lake)托管表的建表语句。
1.8 Bug Fixes(3.0.0)
- 部分源码文件 license header 中的 URL 无法访问;
- SELECT 查询期间可能返回未知错误;
- 支持
SHOW/SET CHARACTER; - 加载数据超过字段长度时返回的错误信息不正确;
- 支持
show full fields from 'table'; - 分区裁剪导致 MV 改写失败;
CREATE MATERIALIZED VIEW中含count(distinct)且作用于 DISTRIBUTED BY 列时 MV 改写失败;- 物化视图使用 VARCHAR 列作为分区列时 FE 无法启动;
- 窗口函数
LEAD/LAG对IGNORE NULLS处理不正确; - 添加临时分区与自动分区创建冲突。
1.9 行为变更(3.0.0)
- 新 RBAC 系统兼容旧权限与角色,但
GRANT、REVOKE等语句语法发生变更; SHOW MATERIALIZED VIEW更名为SHOW MATERIALIZED VIEWS;- 新增保留关键字:
AUTO_INCREMENT、CURRENT_ROLE、DEFERRED、ENCLOSE、ESCAPE、IMMEDIATE、PRIVILEGES、SKIP_HEADER、TRIM_SPACE、VARBINARY。
1.10 升级与回退注意事项(v2.5 ↔ v3.0)
支持从 v2.5 升级到 v3.0,或从 v3.0 回退到 v2.5。理论上也支持更早版本直接升级,但官方建议先升级到 v2.5 再升级到 v3.0,以确保系统可用性。
BDBJE
v3.0 升级了 BDB 库,且 BDBJE 不可回退。回退后仍须使用 v3.0 的 BDB 库,操作步骤:
- 将 FE 包替换为 v2.5 包后,把 v3.0 的
fe/lib/starrocks-bdb-je-18.3.13.jar复制到 v2.5 的fe/lib目录; - 删除
fe/lib/je-7.*.jar。
权限系统
升级到 v3.0 后默认使用新 RBAC 权限系统,此时只能回退到 v2.5。回退后需执行ALTER SYSTEM CREATE IMAGE创建新镜像并等待其同步到所有 Follower FE,否则部分回退操作可能失败(该命令自 2.5.3 起支持)。
2. 3.0.9:3.0 系列的最终版本
发布日期:2024 年 1 月 2 日。3.0.9 是 3.0 系列功能与稳定性打磨的收官版本,新增了近似分位数函数、rowset 数量指标,并对主键表、Bitmap、Compaction 等做了大量优化。
2.1 New Features
- 新增聚合函数 percentile_disc;
- 新增指标
max_tablet_rowset_num,用于设置允许的最大 rowset 数量,帮助发现潜在的 Compaction 问题、降低 “too many versions” 错误的出现频率。在源码中该指标定义于 storage_metrics.h,并在 tablet_manager.cpp 中参与检查逻辑。
2.2 Improvements
- 会话变量
sql_mode新增取值GROUP_CONCAT_LEGACY,用于兼容 v2.5 之前group_concat的实现逻辑。从源码结构看,该模式位定义在 SqlModeHelper.java(MODE_GROUP_CONCAT_LEGACY = 1L << 36,并在SQL_MODE_SET中注册); - 使用 JDK 时默认 GC 算法为 G1;
information_schema中be_tablets视图新增INDEX_DISK字段,记录持久化索引的磁盘占用(字节);- MySQL 外部表及 JDBC Catalog 外部表的查询支持在 WHERE 子句中使用关键字;
- 支持对自动分区表的指定分区执行更新,指定分区不存在时返回错误;
SHOW DATA返回的主键表大小现在包含.cols文件(部分列更新与生成列相关)和持久化索引文件的大小;- 优化主键表在所有 rowset 上执行 Compaction 时的持久化索引更新性能,减少磁盘读 I/O;
- WHERE 子句中 LIKE 右侧字符串不含
%或_时,LIKE 算子被转换为=算子; - 优化主键表 Compaction Score 计算逻辑,使其取值范围与其他三类表更一致;
SHOW ROUTINE LOAD结果新增各分区消费消息的时间戳;- 优化若干 Bitmap 相关操作性能:嵌套循环 Join 优化、
bitmap_xor函数优化、Bitmap 支持 Copy on Write 以降低内存消耗。
2.3 Behavior Change
- 新增会话变量
enable_materialized_view_for_insert,控制物化视图是否改写INSERT INTO SELECT中的查询,默认false; - FE 配置项
enable_new_publish_mechanism从动态参数改为静态参数,修改后需重启 FE 生效。从源码结构看,当前仓库 Config.java 中该项为静态字段(第 4023 行附近),与 3.0.9 的行为变更记录一致; - 垃圾文件(trash files)默认保留期从 3 天改为 1 天。
2.4 Parameter Change
以下三个参数组在 3.0.9 中新增,本文同时给出当前仓库源码中的定义位置,便于查证:
会话变量(Session Variables)
| 参数 | 默认值 | 说明 | 源码位置 |
|---|---|---|---|
cbo_decimal_cast_string_strict | true | 控制 CBO 中 DECIMAL 转 STRING 的方式:true为 v2.5 起的严格转换(按 scale 截断并补 0),false为 v2.5 前逻辑(处理所有有效数字) | SessionVariable.java |
transaction_read_only/tx_read_only | — | 指定事务访问模式,兼容 MySQL 5.7.20+ | SessionVariable.java |
FE 参数
| 参数 | 默认值 | 说明 | 源码位置 |
|---|---|---|---|
routine_load_unstable_threshold_second | 3600(当前仓库) | Routine Load 稳定性判定阈值,与 3.0.9 新增的分区消费时间戳配合使用 | Config.java |
http_worker_threads_num | 0 | FE HTTP 服务器处理请求的线程数;设为 0 或负数时,实际线程数为 CPU 核心数的 2 倍 | Config.java |
default_mv_refresh_immediate | true | 物化视图创建后是否立即刷新 | Config.java |
BE 参数
| 参数 | 默认值 | 说明 | 源码位置 |
|---|---|---|---|
enable_stream_load_verbose_log | false | 为true时记录 Stream Load 作业的 HTTP 请求与响应,便于排查问题 | config.h |
pindex_major_compaction_limit_per_disk | 1 | 限制单盘 Compaction 最大并发度,解决 Compaction 导致的磁盘 I/O 不均衡问题 | config.h |
object_storage_connect_timeout_ms | -1(3.0.9 发布值) | 与对象存储建立 socket 连接的超时时长;-1表示使用 SDK 默认超时 | config.h |
object_storage_request_timeout_ms | -1(3.0.9 发布值) | 与对象存储建立 HTTP 连接的超时时长;-1表示使用 SDK 默认超时 | config.h |
需要注意:从源码结构看,当前仓库中object_storage_request_timeout_ms的默认值已调整为10000(毫秒),并作为starlet_fslib_s3client_request_timeout_ms的别名存在,说明该默认值在后续版本中发生了变化,本文按 3.0.9 发布说明记录其当时的默认值。
2.5 Bug Fixes(3.0.9)
- 某些场景下使用 Catalog 读取 ORC 外部表可能导致 BE 崩溃;
- 数据损坏时创建持久化索引可能导致 BE 崩溃;
- 添加 Bitmap 索引后 BE 偶发崩溃;
- 重放副本操作失败可能导致 FE 崩溃;
- FE 参数
recover_with_empty_tablet设为true时可能导致 FE 崩溃; - 哈希 Join 期间查询失败导致 BE 崩溃;
- 存算一体集群中查询 Iceberg 或 Hive 表可能导致 BE 崩溃;
- 修复 “get_applied_rowsets failed, tablet updates is in error state: tablet:18849 actual row size changed after compaction” 错误;
- 执行
show proc '/statistic'可能死锁; enable_collect_query_detail_info设为true后 FE 性能骤降;- 向开启持久化索引的主键表写入大量数据可能报错;
- 从 v2.4 或更早版本升级后 Compaction Score 可能异常升高;
- 通过 MariaDB ODBC 驱动查询
INFORMATION_SCHEMA时schemata视图的CATALOG_NAME列仅返回 null; - FE 因加载的异常数据崩溃且无法重启;
- Schema Change 执行期间 Stream Load 处于PREPARED状态时,作业待加载的部分源数据丢失;
- HDFS 存储路径末尾包含两个及以上斜杠(
/)时,HDFS 备份恢复失败; ALTER TABLE添加的partition_live_number属性不生效;array_distinct函数偶发导致 BE 崩溃;- 刷新物化视图时可能死锁;
- 全局 Runtime Filter 在特定场景下可能导致 BE 崩溃;
bitmap_to_string可能因数据类型溢出返回错误结果。
3. 3.0.1–3.0.8:中间版本的逐版演进
3.1 版本 3.0.8(2023 年 11 月 17 日)
改进
INFORMATION_SCHEMA的COLUMNS视图可显示 ARRAY、MAP、STRUCT 列。
Bug Fixes
- 执行
show proc '/current_queries';的同时有新查询开始执行时 BE 可能崩溃; - 高频向指定了排序键的主键表持续加载数据时可能出现 Compaction 失败;
- Broker Load 作业带过滤条件时,某些情况下数据加载期间 BE 可能崩溃;
- 执行
SHOW GRANTS时报告未知错误; cast()函数目标类型与原类型相同时,特定数据类型可能导致 BE 崩溃;information_schema.columns视图中 BINARY/VARBINARY 的DATA_TYPE与COLUMN_TYPE显示为unknown;- 长期高频向开启持久化索引的主键表加载数据可能导致 BE 崩溃;
- 启用 Query Cache 时查询结果不正确;
- 集群重启后,恢复表的数据可能与备份前不一致;
- 执行 RESTORE 的同时发生 Compaction 可能导致 BE 崩溃。
3.2 版本 3.0.7(2023 年 10 月 18 日)
改进
- 窗口函数
COVAR_SAMP、COVAR_POP、CORR、VARIANCE、VAR_SAMP、STD、STDDEV_SAMP现在支持ORDER BY子句与 Window 子句; - 写入主键表的加载作业 Publish 阶段由异步改为同步,作业结束后数据立即可查;
- DECIMAL 类型查询发生十进制溢出时返回错误而非 NULL;
- 含无效注释的 SQL 命令执行结果与 MySQL 保持一致;
- 单分区列 RANGE 分区或表达式分区的表,包含分区列表达式的 SQL 谓词也可用于分区裁剪。
Bug Fixes
- 并发创建和删除库表在某些情况下导致表找不到、进而加载失败;
- 使用 UDF 可能导致内存泄漏;
ORDER BY含聚合函数时返回 “java.lang.IllegalStateException: null”;- 使用多级 Hive Catalog 查询存储在腾讯云 COS 中的数据时结果不正确;
ARRAY<STRUCT>类型数据中 STRUCT 部分子字段缺失时,填充默认值导致数据长度错误并引发 BE 崩溃;- 升级 Berkeley DB Java Edition 版本以规避安全漏洞;
- 对主键表并发执行 truncate 与加载时抛 “java.lang.NullPointerException”;
- Schema Change 执行时间过长时,因指定版本的 tablet 被 GC 导致失败;
- 使用 CloudCanal 向
NOT NULL且无默认值的列加载数据时报 “Unsupported dataFormat value is : \N”; - 存算分离集群中
information_schema.COLUMNS不记录表键信息,导致 Flink Connector 加载后无法执行 DELETE; - 升级过程中列类型同步升级(如 Decimal 到 Decimal v3)时,特定表的 Compaction 可能导致 BE 崩溃;
- 使用 Flink Connector 高并发加载且 HTTP 线程与 Scan 线程均达上限时,加载作业被意外挂起;
- 调用 libcurl 时 BE 崩溃;
- 向主键表添加 BITMAP 类型列时出错。
3.3 版本 3.0.6(2023 年 9 月 12 日)
行为变更
- 使用
group_concat函数时必须使用SEPARATOR关键字声明分隔符。
New Features
- 聚合函数
group_concat支持DISTINCT关键字与ORDER BY子句; - 分区数据可随时间自动冷化(不支持 LIST 分区)。
改进
- 支持 WHERE 子句中所有复合谓词与所有表达式的隐式类型转换,可用会话变量
enable_strict_type开启或关闭,默认false; - 统一了 FE 与 BE 之间字符串转整数的逻辑。
Bug Fixes
enable_orc_late_materialization为true时,Hive Catalog 查询 ORC 文件中的 STRUCT 数据返回意外结果;- 通过 Hive Catalog 查询时 WHERE 子句指定分区列与 OR 运算符导致结果不正确;
- RESTful API 动作
show_data对云原生表返回的值不正确; - 数据存储在 Azure Blob Storage 的存算分离集群回退到 3.0 并建表后 FE 无法启动;
- 即使已授权,用户在 Iceberg Catalog 中查询表时仍无权限;
SHOW FULL COLUMNS返回的 BITMAP 或 HLL 类型列Default字段值不正确;- 使用
ADMIN SET FRONTEND CONFIG修改 FE 动态参数max_broker_load_job_concurrency不生效; - 物化视图刷新期间修改其刷新策略可能导致 FE 启动失败;
- 执行
select count(distinct(int+double)) from table_name返回unknown error; - 主键表恢复后重启 BE 出现元数据错误与不一致。
3.4 版本 3.0.5(2023 年 8 月 16 日)
New Features
- 支持聚合函数
COVAR_SAMP、COVAR_POP、CORR; - 支持窗口函数
COVAR_SAMP、COVAR_POP、CORR、VARIANCE、VAR_SAMP、STD、STDDEV_SAMP。
改进
xxx too many versions xxx错误信息增加更多提示;- 动态分区进一步支持以年为分区单位;
- 建表使用表达式分区及
INSERT OVERWRITE覆盖指定分区时,分区字段不区分大小写。
Bug Fixes
- FE 中表级扫描统计不准确导致查询与加载指标失真;
- 修改分区表排序键后查询结果不稳定;
- 数据恢复后 tablet 版本在 BE 与 FE 之间不一致;
- 创建 Colocation 表未指定分桶数时被推断为 0,导致新增分区失败;
INSERT INTO SELECT结果集为空时SHOW LOAD状态误报CANCELED;sub_bitmap函数输入非 BITMAP 类型时 BE 可能崩溃;- 更新
AUTO_INCREMENT列时 BE 可能崩溃; - 物化视图 Outer Join 与 Anti Join 改写错误;
- 平均行大小估算不准导致主键部分更新占用过多内存;
- 激活非活动物化视图可能导致 FE 崩溃;
- 查询无法改写到 Hudi Catalog 外部表创建的物化视图;
- Hive 表删除并手动更新元数据缓存后数据仍可查询;
- 同步调用手动刷新异步物化视图导致
information_schema.task_runs出现多条 INSERT OVERWRITE 记录; - LabelCleaner 线程阻塞导致 FE 内存泄漏。
3.5 版本 3.0.4(2023 年 7 月 18 日)
New Feature
- 即使查询与物化视图使用不同类型的 Join,查询也可被改写。
改进
- 优化异步物化视图手动刷新:支持
REFRESH MATERIALIZED VIEW WITH SYNC MODE语法同步调用刷新任务; - 查询字段不在 MV 输出列中但在 MV 谓词中时,查询仍可被改写命中 MV;
sql_dialect设为trino时,表别名不区分大小写;information_schema.tables_config表新增table_id字段,可关联be_tablets查询 tablet 所属库表名。
Bug Fixes
- 含
sum聚合的查询改写为单表 MV 时,类型推断问题可能导致sum()值不正确; - 存算分离集群中
SHOW PROC查看 tablet 信息时出错; - STRUCT 中 CHAR 数据长度超过上限时 INSERT 挂起;
INSERT INTO SELECT带 FULL JOIN 时部分数据行未返回;ALTER TABLE修改default.storage_medium表属性时报 “Unknown table property”;- Broker Load 加载空文件时报错;
- 下线 BE(Decommissioning)偶尔挂起。
3.6 版本 3.0.3(2023 年 6 月 28 日)
改进
- StarRocks 外部表的元数据同步改为在数据加载时进行;
- 分区自动创建的表执行
INSERT OVERWRITE时可指定分区(详见自动分区能力); - 优化向非分区表添加分区时的错误信息。
Bug Fixes
- Parquet 文件含复杂数据类型时 min/max filter 取错字段;
- 库或表已删除时加载任务仍在排队;
- FE 重启有小概率导致 BE 崩溃;
enable_profile为true时加载与查询作业偶发冻结;- 存活 BE 少于 3 个的集群执行
INSERT OVERWRITE时错误信息不准确。
3.7 版本 3.0.2(2023 年 6 月 13 日)
改进
- 查询经异步物化视图改写后,UNION 查询中的谓词可下推;
- 优化表的自动 tablet 分布策略;
- 移除 NetworkTime 对系统时钟的依赖,修复各服务器系统时钟不一致导致的 NetworkTime 错误。
Bug Fixes
- 数据加载与 Schema Change 并发时 Schema Change 可能挂起;
- 会话变量
pipeline_profile_level设为0时查询报错; cloud_native_storage_type设为S3时 CREATE TABLE 报错;- 未使用密码时 LDAP 认证也能成功;
- 加载作业涉及的表不存在时
CANCEL LOAD失败。
升级说明
若系统中存在名为starrocks的数据库,升级前请使用ALTER DATABASE RENAME改名,因为starrocks是存放权限信息的新增默认系统库名。
3.8 版本 3.0.1(2023 年 6 月 1 日)
New Features
- 【Preview】支持将大算子的中间计算结果溢写(Spill)到磁盘,降低大算子的内存消耗(详见仓库文档 docs/en/administration/spill_to_disk.md 对应的 Spill to disk 主题);
- Routine Load 支持加载 Avro 数据;
- 支持 Microsoft Azure Storage(含 Azure Blob Storage 与 Azure Data Lake Storage)。
改进
- 存算分离集群支持使用 StarRocks 外部表与另一个 StarRocks 集群同步数据;
- Information Schema 新增
load_tracking_logs,记录最近的加载错误; CREATE TABLE语句忽略特殊字符。
Bug Fixes
- 主键表的
SHOW CREATE TABLE返回信息不正确; - Routine Load 作业期间 BE 可能崩溃;
- 创建分区表时指定不支持的属性触发空指针异常(NPE);
SHOW TABLE STATUS返回信息不完整。
升级说明
与 3.0.2 相同:若系统已有名为starrocks的数据库,升级前请先ALTER DATABASE RENAME。
4. 源码定位指南:在仓库中查证 3.0 新参数与新特性
以下内容帮助你在当前仓库中定位 3.0 系列发布说明提到的关键改动,验证参数定义与实际默认值。
4.1 FE 配置项(fe/fe-core/src/main/java/com/starrocks/common/Config.java)
http_worker_threads_num:HTTP 服务线程数,默认 0(0 或负数时取 CPU 核数 2 倍);enable_new_publish_mechanism:新版 Publish 机制开关,3.0.9 起为静态参数,修改需重启 FE,其执行载体为 PublishVersionDaemon.java 等事务发布组件;default_mv_refresh_immediate:建 MV 后立即刷新,默认true;routine_load_unstable_threshold_second:Routine Load 不稳定阈值,当前仓库默认 3600 秒。
4.2 BE 配置项(be/src/common/config.h)
enable_stream_load_verbose_log(默认false):记录 Stream Load 的 HTTP 请求/响应;pindex_major_compaction_limit_per_disk(默认1):限制每盘持久化索引 Major Compaction 并发,缓解盘间 I/O 不均;object_storage_connect_timeout_ms/object_storage_request_timeout_ms:对象存储连接与请求超时配置,后者同时作为starlet_fslib_s3client_request_timeout_ms的别名。
对应的参数说明文档可参考 FE 参数文档 与 BE 参数文档。
4.3 会话变量与 sql_mode
cbo_decimal_cast_string_strict、enable_materialized_view_for_insert、enable_strict_type等会话变量统一定义在 SessionVariable.java 中;sql_mode新增取值GROUP_CONCAT_LEGACY的实现位于 SqlModeHelper.java,以独立模式位(bit 36)表示,可与 MySQL 兼容模式叠加使用。
4.4 percentile_disc 的实现
3.0.9 新增的percentile_disc函数在 BE 侧实现于 percentile_cont.h、aggregator.cpp 与 aggregate_resolver_others.cpp 等文件中,函数注册在 FE 侧 FunctionSet.java 中声明,并有对应测试覆盖 aggregate_test.cpp 与 AnalyzeAggregateTest.java。其用法文档见 percentile_disc 函数文档。
4.5 max_tablet_rowset_num 指标
该指标在 BE 侧由 storage_metrics.h 定义、storage_metrics.cpp 更新,配合 tablet_manager.cpp 中的 rowset 数量检查,用于在写入侧提前发现 Compaction 滞后问题;监控告警的用法可参考 告警文档。
5. 运维升级要点小结
- 升级路径:推荐 v2.5 → v3.0;升级到 v3.0 后 RBAC 默认启用,回退只能回 v2.5,且必须先处理 BDBJE jar(保留
starrocks-bdb-je-18.3.13.jar、删除je-7.*.jar); - 命名冲突:自 3.0.1 起,用户库不应再占用
starrocks这一默认系统库名; - 行为差异需评估:
group_concat强制SEPARATOR、enable_new_publish_mechanism静态化、trash 文件保留期缩短为 1 天、新增 10 个保留关键字(3.0.0)、enable_materialized_view_for_insert默认关闭 MV 对 INSERT 的改写等; - 对象存储用户:3.0.9 起可通过
object_storage_connect_timeout_ms/object_storage_request_timeout_ms显式控制对象存储超时,注意当前仓库默认值已演进为10000ms,实际取值以所部署版本的配置为准; - 存算分离落地:3.0.0 的 shared-data 架构使数据可持久化到 S3 兼容对象存储并以本地盘做热数据缓存,这是后续 3.1+ 版本云原生能力的基础,规划架构时应重点评估缓存命中率与对象存储带宽。
【免费下载链接】starrocksThe world's fastest open query engine for sub-second analytics both on and off the data lakehouse. With the flexibility to support nearly any scenario, StarRocks provides best-in-class performance for multi-dimensional analytics, real-time analytics, and ad-hoc queries. A Linux Foundation project.项目地址: https://gitcode.com/GitHub_Trending/st/starrocks
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考