Release 3.0.1
亲爱的社区小伙伴们,Apache Doris 3.0.1 版本已于 2024 年 8 月 23 日正式发布。从 3.0 系列版本开始,Apache Doris 开始支持存算分离模式,用户可以在集群部署时选择采用存算一体模式或存算分离模式。同时在 3.0.1 版本中,Apache Doris 在存算分离、湖仓一体、半结构化数据分析、异步物化视图等方面进行了全面更新与改进,欢迎大家下载使用。
官网下载: https://doris.apache.org/download/
GitHub 下载: https://github.com/apache/doris/releases
行为变更
查询优化器
-
新增变量
use_max_length_of_varchar_in_ctas
,用于控制在执行CREATE TABLE AS SELECT
(CTAS)操作时 VARCHAR 类型的长度行为。此变量默认设置为 true。当设置为 true 时,如果 VARCHAR 类型的列源自一个表,则采用推导长度;否则,使用最大长度。当设置为 false 时,VARCHAR 类型将始终使用推导出的长度。#37069 -
所有的数据类型将以小写形式展示,以保持与 MySQL 格式的兼容性。#38012
-
同一查询请求中的多条查询语句现在必须使用分号分隔。#38670
查询执行
- 将集群在执行 Shuffle 操作后默认的并行任务数设置为 100,这将提高大型集群中查询的稳定性和并发处理能力。#38196
存储
-
trash_file_expire_time_sec
的默认值已从 86400 秒更改为 0 秒,这意味着如果误删除文件并清空了 FE 回收站,数据将无法恢复。 -
表属性
enable_mow_delete_on_delete_predicate
(在版本 3.0.0 中引入)已更名为enable_mow_light_delete
。 -
显式事务现在被禁止对已写入数据的表执行 Delete 操作。
-
禁止对含有自增字段的表进行重量级的 Schema Change 操作。
新特性
任务调度
- 优化内部调度作业的执行逻辑,取消开始时间和立即执行参数之间的强关联。现在任务在创建时可以指定开始时间或选择立即执行,两者不再冲突,从而提高了调度的灵活性。#36805
存算分离
Lakehouse
-
新增会话变量
serde_dialect
,可以设置复杂类型的输出格式。#37039 -
SQL 拦截功能现在支持外部表
- 更多内容,参考文档SQL 拦截
-
Insert Overwrite 现在支持 Iceberg 表。#37191
异步物化视图
查询执行
- Group Concat 函数现在支持 DISTINCT 和 ORDER BY 选项。#38744
半结构化数据管理
-
ES Catalog 现在将 Elasticsearch 中的
nested
或object
类型映射为 Doris 的 JSON 类型。#37101 -
新增
MULTI_MATCH
函数,支持在多个字段中匹配关键词,并能利用倒排索引加速搜索。#37722 -
新增
explode_json_object
函数,可以将 JSON 数据中的 Object 展开为多行。#36887 -
倒排索引现在支持 Memtable 前移,在多副本写入时只需构建一次索引,减少 CPU 消耗并提升性能。#35891
-
新增
MATCH_PHRASE
支持正向词距(slop),例如msg MATCH_PHRASE 'a b 2+'
可以匹配包含词 a 和 b,它们之间的词距不超过两个,并且 a 在 b 的前面;而普通的词距(slop)如果没有最后的加号+
,则不保证 a 在 b 的前面。#36356
其他
改进
存储
-
降低单个 BE 内磁盘间均衡导致写失败的可能性。#38000
-
降低 Memtable Limiter 的内存消耗。#37511
-
在替换分区操作时,将旧分区移动到 FE 回收站。#36361
-
优化了 Compaction 的内存消耗。#37099
-
增加了会话变量以控制 JDBC PreparedStatement 的审计日志,默认不打印。#38419
-
优化了 Group Commit 选择 BE 的逻辑。#35558
-
优化了列更新的性能。#38487
-
优化了
delete bitmap cache
的使用。#38761 -
添加了配置以控制冷热分层时查询的亲和性。#37492
存算分离
-
遇到对象存储服务端限速时,现在会自动重试。#37199
-
适应存算分离模式下 Memtable Flush 的线程数。#38789
-
将 Azure 作为编译选项,以便支持在不支持 Azure 的环境中编译。
-
优化了对象存储访问限速的可观测性。#38294
-
允许 File Cache TTL 队列进行 LRU 淘汰,增加了 TTL 队列的可用性。#37312
-
优化了存算分离模式下 Balance Writeeditlog IO 次数。#37787
-
优化了存算分离模式下建表的速度,批量发送创建 Tablet 的请求。#36786
-
通过退避重试的方式,优化了本地 File Cache 可能不一致时导致的读取失败问题。#38645
Lakehouse
-
优化了 Parquet/ORC 格式读写操作的内存统计。#37234
-
Trino Connector Catalog 现在支持谓词下推。#37874
-
新增会话变量
enable_count_push_down_for_external_table
,用于控制是否开启外部表的count(*)
下推优化。#37046 -
优化了 Hudi 快照读的读取逻辑,当快照为空时返回空集,与 Spark 行为保持一致。#37702
-
优化了 Hive 表分区列的读取性能。#37377
异步物化视图
-
透明改写计划速度提升了 20%。#37197
-
如果 Group Key 满足数据唯一性,在透明改写时不再进行上卷,以更好地进行嵌套匹配。#38387
-
透明改写现在可以更好地进行聚合消除,以提高嵌套物化视图的匹配成功率。#36888
MySQL 兼容性
查询优化器
-
显著提升了复杂查询的计划速度。#38317
-
根据数据分桶数量,自适应选择是否进行 Bucket Shuffle,以避免极端情况下的性能劣化。#36784
-
支持将 Limit 下推到第一阶段聚合,以提升性能。#34853
-
SQL 缓存现在支持包含用户变量的查询场景。#37915
-
优化了聚合语义不合法时的错误信息。#38122
查询执行
-
适配了 AggState 的 2.1 到 3.x 兼容性,并修复了 Coredump 问题。#37104
-
重构了不带 Join 时 Local Shuffle 的策略选择。#37282
-
将内部表查询的 Scanner 修改为异步方式,以防止查询内部表时卡住。#38403
-
优化了 Join 算子构建 Hash 表时的 Block Merge 过程。#37471
-
优化了 MultiCast 持有锁的时间。#37462
-
优化了 gRPC 的 keepAliveTime 并增加了链接监测机制,降低了查询过程中因 RPC 错误导致查询失败的概率。#37304
-
当内存超限时,清理 Jemalloc 中的所有 Dirty Pages。#37164
-
优化了
aes_encrypt
/decrypt
函数对常量类型的处理性能。#37194 -
优化了
json_extract
函数对常量数据的处理性能。#36927 -
优化了
ParseUrl
函数对常量数据的处理性能。#36882
半结构化数据管理
-
Bitmap 索引现在默认使用反向索引,
enable_create_bitmap_index_as_inverted_index
默认设置为 true。#36692 -
在存算分离模式下,DESC 现在可以查看 VARIANT 类型的子列。#38143
-
移除了倒排索引查询时检查文件是否存在的步骤,以降低远程存储的访问延迟。#36945
-
ARRAY / MAP / STRUCT 复杂类型现在支持 AGG 表的
replace_if_not_null
。#38304 -
倒排索引查询现在在 MOW 表上与 Duplicate 表一致。#37428
-
优化了倒排索引加速 IN 查询的性能。#37395
-
TOPN 查询时减少了多余的内存分配,以提升性能。#37429
-
当创建带分词的倒排索引时,现在自动开启
support_phrase
选项,以加速match_phrase
系列短语查询。#37949
其他
-
Audit Log 现在可以记录 SQL 类型。#37790
-
增加对
information_schema.processlist
Show All FE 的支持。#38701 -
缓存 Ranger 的
atamask
和rowpolicy
,以加速查询效率。#37723 -
优化 Job Manager 的元数据管理,在修改元数据后立即释放锁,以减少锁持有时间。#38162
缺陷修复
升级
-
修复从 2.1 版本升级时 mtmv load 失败的问题。#38799
-
修复在 2.1 版本升级时找不到
null_type
的问题。#39373 -
修复从 2.1 版本升级到 3.0 版本时权限持久化的兼容性问题。#39288
导入
-
修复 CSV 格式解析中,换行符被包围符包围时解析失败的问题。#38347
-
Group Commit 现在支持新优化器。#37002
-
修复 JDBC setNull 时 Group Commit 报告数据错误的问题。#38262
-
优化 Group Commit 遇到
delete bitmap lock
错误时的重试逻辑。#37600 -
修复 Routine Load 不能使用 CSV 包围符和转义符的问题。#38402
-
修复 Routine Load Job 名字大小写混用时无法显示的问题。#38523
-
优化 FE 主从切换时主动恢复 Routine Load 的逻辑。#37876
-
修复 Kafka 中数据全部过期时 Routine Load 暂停的问题。#37288
-
修复
show routine load
返回空结果的问题。#38199 -
修复 Routine Load 多表流式导入时的内存泄露问题。#38255
-
修复 Stream Load 不返回 Error URL 的问题。#38325
-
修复导入少于预期的 Segment 时可能不报错的问题。#36753
-
修复 Load Stream 泄露的问题。#38912
-
优化下线节点对导入操作的影响。#38198
-
修复 Insert Into 空数据情况下事务不结束的问题。#38991
存储
01 备份与恢复
02 Compaction(压缩)
-
修复有序数据压缩时 Cumu Compaction 处理 Delete 错误的的问题。#38742
-
修复顺序压缩优化导致的聚合表重复 Key 问题。#38224
-
修复大宽表下压缩操作导致 Coredump 的问题。#37960
-
修复压缩任务并发统计不准确导致的压缩饥饿问题。#37318
03 MOW Unique Key(MOW 唯一键)
-
解决累计压缩删除 Delete Sign 导致的副本间数据不一致问题。#37950
-
在新的优化器下,MOW Delete 表现在使用部分列更新。#38751
-
修复存算分离下 MOW 表可能出现的重复 Key 问题。#39018
-
修复 MOW Unique 和 Duplicate 表不能修改列顺序的问题。#37067
-
修复 Segcompaction 可能导致的数据正确性问题。#37760
-
修复列更新可能出现的内存泄露问题。#37706
04 其他
修复 FE 重启时自增 ID 可能重复的问题。#37306
-
修复 Delete 操作优先级队列可能的排队问题。#37169
-
优化 Delete 重试逻辑。#37363
-
修复新优化器下建表语句中
bucket = 0
的问题。#38971 -
修复 FE 生成 Image 失败时错误地报告成功的问题。#37508
-
修复 FE 下线节点时使用错误 nodename 可能导致的 FE 成员不一致问题。#37987
-
修复 CCR 增加分区可能失败的问题。#37295
-
修复倒排索引文件中
int32
溢出的问题。#38891 -
修复 TRUNCATE TABLE 失败可能导致 BE 不能下线的问题。#37334
-
修复手动触发磁盘迁移时可能出现的 Coredump 问题。#37712
存算分离
-
修复
show create table
可能会展示两次file_cache_ttl_seconds
属性的问题。#38052 -
修复设置 File Cache TTL 后,Segment Footer TTL 未正确设置的问题。#37485
-
修复 File Cache 因大量转换 Cache 类型可能会导致 Coredump 的问题。#38518
-
修复 File Cache 可能会泄漏 fd 的问题。#38051
-
修复 Schema Change Job 覆盖 Compaction Job 导致 Base Tablet Compaction 不能正常完成的问题。#38210
-
修复 Base Compaction Score 因 Data Race 可能会不准确的问题。#38006
-
修复导入返回的错误信息可能不能正确上传到对象存储的问题。#38359
-
修复存算分离模式和存算一体模式 2PC 导入返回信息不一致的问题。#38076
-
修复 File Cache 预热未正确设置 File Size 导致 Coredump 的问题。#38939
-
修复部分列更新没有正确出列 Delete 的问题。#37151
-
修复 Observer 遇到
-230
错误没有进行正确重试的问题。#37625 -
修复
show load
带条件时没有正确 analyze 的问题。#37656 -
修复存算分离模式下
show streamload
导致 BE Coredump 的问题。#37903 -
修复
copy into
在严格模式下未正确校验列名的问题。#37650 -
修复一表多流导入没有权限的问题。#38878
-
修复 getVersionUpdateTimeMs 可能会越界的问题。#38074
-
修复 FE Azure Blob List 没有实现正确的问题。#37986
-
修复 Azure Blob 回收时间计算不准确导致不触发回收的问题。#37535
-
修复存算分离模式下倒排索引文件漏删的问题。#38306
Lakehouse
-
修复 Oracle Catalog 读取二进制数据的问题。#37078
-
修复多 FE 情况下,获取外表元数据可能导致的死锁问题。#37756
-
修复 JNI Scanner 打开失败导致 BE 节点宕机的问题。#37697
-
修复 Trino Connector Catalog 读取 Date 类型慢的问题。#37266
-
优化 Hive Catalog 的 Kerberos 认证逻辑。#37301
-
修复解析 MinIO 属性时,Region 属性可能解析错误的问题。#37249
-
修复 FE 创建过多的 FileSystem 导致内存泄漏的问题。#36954
-
修复读取 Paimon 时区信息错误的问题。#37716
-
修复 Hive 写回操作可能导致的线程泄漏问题。#36990
-
修复开启 Hive Metastore Event 同步功能导致的空指针问题。#38421
-
修复创建 Catalog 时报错信息不清晰或卡死的情况。#37551
-
修复读取 Hive Text 格式表时与 Hive 行为不一致的问题。#37638
-
修复切换 Catalog 和 Database 逻辑错误的问题。#37828
MySQL 兼容性
- 修复开启 SSL 后,MySQL 协议中某些 Flag 设置不正确的问题。#38086
异步物化视图
-
修复基表分区数量非常多时可能导致的构建失败问题。#37589
-
修复构建嵌套物化视图时,即使可以进行分区刷新,也错误地进行了全表刷新的问题。#38698
-
修复分区刷新在分析分区依赖时,不能处理同时存在合法和不合法依赖关系的问题。#38367
-
修复最终返回结果包含 NULL Type 导致异步物化视图可能构建失败的问题。#37019
-
当包含同名的同步物化视图和异步物化视图时,透明改写可能出现规划错误。#37311
同步物化视图
查询优化器
-
修复查询和 Delete 等操作同时进行可能导致的死锁问题。#38660
-
修复分桶裁剪在 Decimal 列分桶上可能错误裁剪的问题。#37889
-
修复当 Mark Join 参与 Join Reorder 时,规划可能出现错误的问题。#39152
-
修复关联子查询关联条件不是简单列时,结果错误的问题。#37644
-
修复分区裁剪不能正确处理 or 表达式的问题。#38897
-
修复当进行 JOIN 和 AGG 交换执行顺序的优化时,可能导致的规划报错问题。#37343
-
修复
str_to_date
在 DATEV1 类型上进行常量折叠计算错误的问题。#37360 -
修复 ACOS 函数常量折叠返回非 NaN 的问题。#37932
-
修复偶尔出现的规划报错 "The children format needs to be [WhenClause+, DefaultValue?]" 的问题。#38491
-
修复当投影中包含窗口函数,且同时存在一个列的原始列和其别名时,规划可能出现错误的问题。#38166
-
修复当聚合参数中含有 Lambda 表达式,可能导致规划报错的问题。#37109
-
修复在极端情况下可能出现的 Insert 报错:"MultiCastDataSink cannot be cast to DataStreamSink" 的问题。#38526
-
修复创建表时,新优化器对于传入的
char(0)/varchar(0)
没有正确处理的问题。#38427 -
修复
char(255) toSql
行为不正确的问题。#37340 -
修复
agg_state
类型内部的 nullable 属性可能规划错误的问题。#37489 -
修复 Mark Join 时行数统计不准确的问题。#38270
查询执行
-
修复多个场景下,Pipeline 执行引擎被卡住导致查询不结束的问题。#38657 #38206 #38885 #38151 #37297
-
修复 NULL 和非 NULL 列在差集计算时导致的 Coredump 问题。#38750
-
修复 Delete 语句中 DECIMAL 类型为纯小数时报错的问题。#37801
-
修复
width_bucket
函数结果错误的问题。#37892 -
修复当单行数据很大且返回结果集也很大时(超过 2GB)查询报错的问题。#37990
-
修复单副本导入时 rpc 链接没有正确释放导致的 Coredump 问题。#38087
-
修复
foreach
函数处理 NULL 导致的 Coredump 问题。#37349 -
修复 stddev 在 DecimalV2 类型下结果错误的问题。#38731
-
修复
bitmap union
计算性能慢的问题。#37816 -
修复 Profile 中聚合算子的 RowsProduced 没有设置的问题。#38271
-
修复
jemalloc cache memory tracker
记录不准确的问题。#37464 -
增加配置项
enable_stacktrace
,用户可以通过设置此选项来控制 BE 日志中是否输出异常栈。#37713 -
修复 Arrow Flight SQL 在设置
enable_parallel_result_sink
为 false 时不能正常工作的问题。#37779 -
修复
sleep
函数传参 const 字符串时的 Coredump 问题。#37681 -
增加审计日志的队列长度,解决了数千并发场景下审计日志不能正常记录的问题。#37786
-
修复创建 Workload Group 导致的线程数过多,导致 BE Coredump 的问题。#38096
-
修复 MULTI_MATCH_ANY 函数导致的 Coredump 问题。#37959
-
修复
insert overwrite auto partition
导致事务回滚的问题。#38103 -
修复 TimeUtils formatter 没有使用正确时区的问题。#37465
-
修复 week/yearweek 常量折叠场景下结果错误的问题。#37376
-
修复
collect_set
函数结合窗口函数使用时 Coredump 的问题。#38234 -
修复
percentile_approx
在滚动升级过程中导致的 Coredump 问题。#39321 -
修复
mod
函数在异常输入时导致的 Coredump 问题。#37999 -
修复 Broadcast Join 在 probe 开始运行时 Hash Table 构建未完成的问题。#37643
-
修复多线程下执行相同表达式可能导致 Java UDF 结果错误的问题。#38612
-
修复
conv
函数返回类型错误导致的溢出问题。#38001 -
修复
json_replace
函数返回类型不正确的问题。#3701 -
修复
percentile
聚合函数 Nullable 属性设置不合理的问题。#37330 -
修复
histogram
函数结果不稳定的问题。#38608 -
修复 Profile 中 Task State 显示不正确的问题。#38082
-
修复系统刚启动时部分 query 被错误取消的问题。#37662
半结构化数据管理
-
修复压缩过程中索引大小统计错误的问题。#37232
-
修复
array_range
和array_with_const
函数在大数据量下内存占用高的问题。#38284 #37495 -
修复选择 ARRAY / MAP / STRUCT 类型的列时可能出现的 Coredump 问题。#37936
-
修复 Stream Load 指定 jsonpath 时 simdjson 解析错误导致导入失败的问题。#38490
-
修复 JSON 数据中有重复 Key 时处理异常的问题。#38146
-
修复 DROP INDEX 后可能出现查询报错的问题。#37646
-
修复索引压缩时在合并行检查中的错误返回问题。#38732
-
倒排索引 v2 格式现在支持修改列名。#38079
-
修复没有索引时 MATCH 函数匹配空字符串时 Coredump 的问题。#37947
-
修复 FE 重启后
row_store_page_size
不正确的问题。#38240
其他
-
修复时区配置问题,现在默认时区不再固定为 UTC+8,而是从系统配置中获取。#37294
-
修复由于存在多个 JSR 规范实现导致使用 Ranger 时出现的类冲突问题。#37575
-
修复部分 BE 代码中字段可能未初始化的问题。#37403
-
修复 Random Distributed 表 Delete 语句报错的问题。#37985
-
修复创建同步物化视图时错误地需要基表的
alter_priv
权限问题。#38011 -
修复当 TVF 中使用了 Resource 时未对 Resource 鉴权的问题。#36928
致谢
@133tosakarin、 @924060929、 @AshinGau、 @Baymine、 @BePPPower、 @BiteTheDDDDt、 @ByteYue、 @CalvinKirs、 @Ceng23333、 @DarvenDuan、 @FreeOnePlus、 @Gabriel39、 @HappenLee、 @JNSimba、 @Jibing-Li、 @KassieZ、 @Lchangliang、 @LiBinfeng-01、 @Mryange、 @SWJTU-ZhangLei、 @TangSiyang2001、 @Tech-Circle-48、 @Vallishp、 @Yukang-Lian、 @Yulei-Yang、 @airborne12、 @amorynan、 @bobhan1、 @cambyzju、 @cjj2010、 @csun5285、 @dataroaring、 @deardeng、 @eldenmoon、 @englefly、 @feiniaofeiafei、 @felixwluo、 @freemandealer、 @gavinchou、 @ghkang98、 @hello-stephen、 @hubgeter、 @hust-hhb、 @jacktengg、 @kaijchen、 @kaka11chen、 @keanji-x、 @liaoxin01、 @liutang123、 @luwei16、 @luzhijing、 @lxr599、 @morningman、 @morrySnow、 @mrhhsg、 @mymeiyi、 @platoneko、 @qidaye、 @qzsee、 @seawinde、 @shuke987、 @sollhui、 @starocean999、 @suxiaogang223、 @w41ter、 @wangbo、 @wangshuo128、 @whutpencil、 @wsjz、 @wuwenchi、 @wyxxxcat、 @xiaokang、 @xiedeyantu、 @xinyiZzz、 @xy720、 @xzj7019、 @yagagagaga、 @yiguolei、 @yujun777、 @z404289981、 @zclllyybb、 @zddr、 @zfr9527、 @zhangbutao、 @zhangstar333、 @zhannngchen、 @zhiqiang-hhhh、 @zjj、 @zy-kkk、 @zzzxl1993