亲爱的社区小伙伴们,Apache Doris 2.0.3 版本已于 2023 年 12 月 14 日正式发布,该版本对复杂数据类型、统计信息收集、倒排索引、数据湖分析、分布式副本管理等多个功能进行了优化,欢迎大家下载体验。

此外,由衷感谢 104 位贡献者,他们为 Apache Doris 2.0.3 版本提交了超过 1000 个功能优化项以及问题修复,为性能及稳定性提升做出重要贡献。

GitHub下载

官网下载页

新增特性

自动统计信息收集

统计信息是 CBO 优化器进行代价估算时的依赖,通过收集统计信息有助于优化器了解数据分布特性、执行计划成本估算以及执行计划选择,用于查询效率的提升。

从 2.0.3 版本开始,Apache Doris 支持了自动统计信息收集,并默认为开启状态。在每次导入事务提交后,Apache Doris 会记录导入事务更新的表信息,并估算表统计信息的健康度。当健康度低于配置参数时,Doris 将自动触发统计信息收集作业。为了降低统计信息作业的资源开销,Apache Doris 会自动采取采样的方式收集统计信息,用户也可根据需求调整参数以获得更准确的数据分布信息。

更多信息请参考:https://doris.apache.org/docs/query-acceleration/statistics/

数据湖框架支持复杂数据类型

增加更多内置函数

改进优化

性能优化

  • 在过滤率高的倒排索引 match where 条件和过滤率低的普通 where 条件组合时,大幅降低索引列的 IO
  • 优化经过 where 条件过滤后随机读数据的效率
  • 优化在 JSON 数据类型上使用老的 get_json_xx 函数的性能,提升 2-4 倍
  • 支持配置降低读数据线程的优先级,保证写入的 CPU 资源和实时性
  • 增加返回 largeint 的 uuid-numeric 函数,性能比返回 string 的 uuid 函数快 20 倍
  • Case when 的性能提升 3 倍
  • 在存储引擎执行中裁剪不必要的谓词计算
  • 支持 count 算子下推到存储层
  • 优化支持 and or 表达式中包含 nullable 类型的计算性能
  • 支持更多场景下 limit 算子提前到 join 前执行的改写,以提升执行效率
  • 增加消除 inline view 中的无用的 order by 算子,以提升执行效率
  • 优化了部分情况下的基数估计和代价模型的准确性,以提升执行效率
  • 优化了 JDBC catalog 的谓词下推逻辑和大小写逻辑
  • 优化了 file cache 的第一次开启后的读取效率
  • 优化 Hive 表 SQL cache 策略,使用 HMS 中存储的分区更新时间作为 cache 是否失效的判断,提高 cache 命中率
  • 优化了 Merge-on-Write compaction 效率
  • 优化了外表查询的线程分配逻辑,降低内存使用
  • 优化 column reader 的内存使用

分布式副本管理改进

优化跳过删除分区、colocate group、持续写时均衡失败、冷热分层表不能均衡等;

安全性提升

Bugfix 和稳定性提升

复杂数据类型

倒排索引

物化视图

采样查询

主键表

导入和 Compaction

数据湖兼容性

JDBC 外表兼容性

SQL规划和优化

行为变更

  • 复杂数据类型 array/map/struct 的输出格式改成跟输入格式以及 JSON 规范保持一致,跟之前版本的主要变化是日期和字符串用双引号括起来,array/map 内部的空值显示为 null 而不是 NULL。 https://github.com/apache/doris/pull/25946
  • 默认情况下,当用户属性 resource_tags.location 没有设置时,只能使用 default 资源组的节点,而之前版本中可以访问任意节点。 https://github.com/apache/doris/pull/25331
  • 支持 SHOW_VIEW 权限,拥有 SELECT 或 LOAD 权限的用户将不再能够执行 SHOW CREATE VIEW 语句,必须单独授予 SHOW_VIEW 权限。 https://github.com/apache/doris/pull/25370