版本发布历史

5.2.2 发布介绍

发布日期:2024-01-16


错误修复

  1. MatrixGate
    • 修复了迁移模式中,数据通道连接数量超过源集群 Segment 的数量时,数据迁移会报错并中止的问题。(#6800)
    • 修复了当主节点(Master)发生故障自动转移(Failover)自动切换到备用节点(Standby)后,MatrixGate(mxgate)无法响应数据定义语言(DDL)变更而自动刷新任务的问题。(#6850)
    • 修复了当目标表不存在时,用户通过 MatrixUI 中 Kafka 数据流功能配置的 mxgate 服务会被 supervisor 进程反复重启的问题。(#6928-1)
    • 修复了通过多个浏览器窗口同时创建 Kafka 数据流时,后台启动的 mxgate 端口可能冲突的问题。(#6928-2)
  2. MxShift
    • 修复了当源端数据库与目标端数据库异构(主机数、节点数不同)时,启动 mxshift 可能报错 (错误信息:/tmp/mxshift/mxshift_worker.xxxx 不存在)的问题。此问题仅存在于 5.2.1 版本,更早版本均不受影响。已经升级到 5.2.1 版本的用户可以直接拷贝 5.2.2 版本的 mxshift 使用。(#6909)
  3. Cylinder
    • 修复了当 .psqlrc 文件存在 \timing 设置时,cylinder不能正确采集数据表统计信息的问题。此问题仅存在于 5.2.1 版本,更早版本不受影响。(#6860)

5.2.1 发布介绍

发布日期:2024-01-02


增强与改进

  1. MXKV2
    • 优化了 MXKV2 的内存使用(#3178)。
    • 优化了 MXKV2 的压缩效果(#3180)。
    • 优化 了MXKV2 的数据导入性能(#3162)。
  2. 向量化执行引擎
    • 优化了向量化 motion 算子在多列查询中的内存使用(#3175)。
    • 优化了向量化哈希聚集的外部哈希算法的性能(#3213)。
    • 优化了文本类型的顺序比较效率(#3163)。

错误修复

  1. MatrixGate
    • 修复了 Kafka 数据源使用 consumer-group 模式时,当数据库发生重启/崩溃后,MatrixGate 有概率无法继续从 consumer-group 抽取到数据的问题(#6848)。
  2. 图形化界面
    • 修复了当 mxstat_statements.harvest_interval 配置为非默认值时,负载分析页面报错及显示异常的问题(#6768)。
  3. 持续聚集
    • 修复了持续聚集(Continuous View,简称 CV) 在 groupagg 算子关闭下创建失败的问题(#6823)。
    • 修复了 CV 内存释放顺序错误导致的异常退出问题(#6766)。
  4. 存储引擎
    • 修复了 MARS3 的前后台进程死锁的问题(#6816)。
    • 修复了 MARS2 因增删列导致的 Option 空指针问题。
  5. 资源组
    • 修复了资源组模式预加载的 bgworker 会在启动过程崩溃的问题(#3169)。
    • 修复了资源组对 cgroup 路径的处理问题(#3169)。
    • 修复了资源组可能给出错误的状态统计信息的问题(#3198)。
  6. 执行引擎
    • 修复了 AssertOp 算子初始化过程中可能崩溃的问题(#3183)。
    • 修复了 AOCO 表在向量化扫描过程中可能崩溃的问题(#3158)。
    • 修复子计划中由于 minmax agg 算子优化导致崩溃的问题(#3190)。
    • 修复了在特定条件下 MARS2 向量化扫描崩溃的问题(#3151)。
    • 修复了向量化共享扫描在特定条件下崩溃的问题(#3082)。
    • 修复了向量化算子在查询调度器(Query Dispatcher,简称QD)进程和查询执行器(Query Executor,简称 QE)进程上可能看到不一致的开关的问题(#3109)。
    • 修复了部分向量化算子只能使用较小量内存的问题(#6626)。
  7. 数据类型
    • 修复了 MXKV2 列可能未被正确配置的问题(#3172)。
    • 修复了 MXKV2 在特定场合下的 NULL 值处理(#3176)。
    • 修复了 MXKV2 在特定条件下错误地下推了表达式的问题(#3131)。
    • 修复了 MXKV2 数据可见性问题(#3149)。
    • 修复了 MXKV2 类型在某些场景下生成了无用索引的问题(#3149)。

5.2.0 发布介绍

发布日期:2023-12-08


特性发布

  1. 图形化界面:
    • 支持 YMatrix 在统信 UOS20、龙蜥 8.X、麒麟信安 3.X、中标麒麟 7.X 操作系统上的图形化安装部署。
    • 新增 SQL 执行器功能。
    • 新增负载分析功能(文档)。
  2. 向量化执行引擎(文档):
    • 支持对接 ORCA 优化器。HEAP,AO 存储引擎支持直接对接,MARS2/3 不支持对接。特别地, AOCO 可以同时对接向量化执行引擎和 ORCA。
  3. 新增降级存储功能,支持数据自动冷热分离,冷数据降级存储至更经济的对象存储中(文档)。
  4. 新增数据类型 MXKV2,在 MXKV 基础上简化了使用步骤并提高了压缩性能(文档)。
  5. 新增 pgvector 插件工具以支持向量场景(文档)。

增强与改进

  1. 持续聚集参数 populate 默认值更改为 false(文档)。
  2. 原有两个 RPM 包合二为一,体积可能变大。但用户无需额外再安装 DebugInfo 包,这对于业务环境的调试与分析更加有利。
  3. MatrixGate:
    • 支持对指定任务启用或关闭自动调节 slot 数量的功能,支持查询所有任务或指定任务的调节状态(文档)。
    • 引入 [writer.stream] 类别下的 --abort-by-pause-timeout 参数。支持当任务(Job)进入 pause 状态时,根据此参数规定的超时时间,放弃内存里堆积的数据(文档)。
    • 支持通过 HTTP 的方式批量写入 JSON 类型数据(文档)。
  4. 图形化界面:
    • 优化了多节点部署功能中 etcd 存储路径配置步骤的交互(文档)。
    • 优化了 Kafka 数据流写入功能的步骤和交互(文档)。
  5. 数据迁移工具 mxshift:
    • DDL(Data Definition Language)迁移过程允许忽略指定错误继续执行。可通过 --ignore-error 参数配置忽略的错误种类(文档)。
    • 简化了迁移过程的权限授权,仅通过配置源集群对目标集群 Master 节点的访问权限即可。如需关闭此功能,配置 --disable-connector=true(文档)。
    • 支持日志分离,终端输出的日志和文件保存的日志存在格式区别,优化了用户体验。
    • 支持通过配置 --write-table-meta-file 参数将迁移表元信息写到指定文件,并在后续迁移过程中通过 --read-table-meta-file 参数直接读取该文件中信息,以缩短迁移导致的业务停机时间(文档)。
    • 新增 --small-table-mb 参数,合理配置该参数可优化小表传输速度(文档)。
    • 支持动态调整并发数(文档)。

错误修复

  1. 优化器:
    • 修复了分区表上无法生成 ORCA 查询计划的问题(#6104)。
  2. 执行引擎:
    • 修复了向量化执行器在 EXPLAIN ANALYZE 信息为空时会崩溃的问题(#6634)。
  3. MatrixGate:
    • 改进了 JSON 映射语义,目前输入 { "key": null } ,key 一律映射为数据库的 NULL 值(#6536)。
    • 修复了当使用 mxgate pause 命令(不加 -X 参数)暂停任务后,通过 mxgate stop 或 Ctrl+C 无法停止 mxgate 的问题(#6519)。
    • 修复了当任务(Job)处于暂停状态时,数据表 DDL 被修改或者自动调节 slot 功能尝试改变任务的状态时,三者行为发生冲突的问题(#6436)。
    • 对数据行进行 JSON 映射时,如果每一个当前数据行需要映射的列都找不到对应的键,则报告该行数据非法,不会向数据库插入空行(#6488)。
    • 改进了 mxgate 自身日志组件的性能和内存占用问题(#6242)。
    • 修复了当数据库默认搜索路径不是 public 时,启动 mxgate 自动创建 matrixts 扩展失败的问题(#6430)。
    • 修复了对同一个数据库使用多个 mxgate 进程时,mxgate watch 的指标报告存在混淆的问题(#5848)。
    • 优化了 plain transform 组件内存池的释放时机,减少了 mxgated 进程的内存占用(#6071)。
  4. 存储引擎:
    • 修复了 MARS3 在 uniquemode 模式下 uidoverlap scope 计算异常的问题(#6551)。
    • 修复了 reader gang reuse 导致的 syscache 不一致的问题(#6419)。
    • 修复了 workerpool 中的 compact worker 的状态维护问题(#6374)。
    • 修复了 HashJoin 和 NestLoop 同时存在时 Squelch 状态重置的问题(#6598)。
    • 修复了 BaseStore.extend 在存在多个文件单元时出现的元数据损坏问题(#6587)。
    • 修复了 dsm share snapshot 在 writer qe 退出时会崩溃的问题(#6514)。
    • 修复了 MARS3 的 seqscan 的 MemoryContext 生命周期不匹配的问题 (#6296)。
    • 修复了 MARS3 不支持 copy-to 的问题(#6440)。
    • 修复了 MARS3 在执行 ALTER TABLE 时报错的问题(#6419)。
    • 修复了扩容后 compact scheduler 未启动的问题(#6419)。
    • 修复了存在空值数据时 sortkeyhint 格式错误的问题(#6395)。
    • 修复了 join_concat 处理 non-scalar Json 时会崩溃的问题(#6350)。
    • 修复了 mars2_btree 处理多列且带表达式的索引列的问题(#6296)。
    • 修复了 run 在合并时最大选取条数设置错误的问题(#6226)。
    • 修复了 unlogged table 创建索引时会崩溃的问题(#6300)。
    • 修复了 run 在合并的过程中数据相加导致溢出的问题(#6297)。
    • 修复了 run 在合并的过程中,读取数据进行对齐计算时,计算出错的问题(#6226)。
    • 修复了没能禁止修改 uniqemode 模式的问题(#6439)。
    • 修复了并行扫描时,过滤条件错误下推的问题(#6553)。
    • 修复了无法删除分区表的 brin 索引的问题(#6589)。
    • 修复了创建索引时被取消,之后再次创建出错的问题(#6545)。
    • 修复了查询时,读完的 run 没能提前释放的问题(#6394)。
    • 修复了自动 ANALYZE 时处理的列不对的问题(#6447)。
    • 修复了添加执行路径时,发现并行不安全未及时丢弃的问题(#6447)。
    • 修复了 seqscan 读取数据过慢的问题(#6607)。
    • 修复了在 CacheMemoryContext 中的细微内存泄漏(#6307)。
    • 修复了 MARS3 Alter Type 出现的崩溃问题(#6496)。
    • 修复了 MARS3 普通用户创建时的权限问题(#6295)。
    • 修复了 MARS3 hint only 功能的问题(#6530)。
    • 修复了 MARS3 文件打开失败的问题(#6459)。
  5. 数据类型
    • 修复了 MXKV2 在特定情况下会崩溃的问题(#6466,#6409,#6568,#6544)。
    • 修复了 MXKV2 在主表删除后可能残留附属表的问题(#6408)。

5.1.3 发布介绍

发布日期:2023-09-25


错误修复

  1. MatrixGate:
    • 优化 zstd 压缩句柄的内存释放周期,减少 mxgated 进程内存占用(#6299)
    • 修复了当集群存在 Standby 节点时,MatrixGate 建立的数据库会话无法定期刷新的问题(#6308)

5.1.2 发布介绍

发布日期:2023-09-11


错误修复

  1. 存储引擎:
    • 修复 MARS3 表由于 L0 缓存层的数据并发写入异常,导致查询异常的问题(#6155)
  2. MatrixGate:
    • 修复数据表在自动分区过程中 MatrixGate 因内部超时未将任务恢复,导致无法继续入数的问题(#6165)

5.1.1 发布介绍

发布日期:2023-08-25


错误修复

  1. 存储引擎:
    • 修复 MARS3 存储引擎 uniquemode 模式下 redo log 的问题

5.1.0 发布介绍

发布日期:2023-08-22


特性发布

  1. 新增 MARS3 存储引擎(文档),其与 MARS2 相比:
    • 实现行列混存,写入数据行存落盘,大幅提升写入性能
    • 无需额外创建索引即可完成建表
    • 支持数据的更新与删除,支持增删列,支持 MVCC 机制
    • 不仅继承了 MARS2 时序场景下的性能优势,还增添了对 AP 和 TP 场景的支持
  2. 新增镜像实例迁移工具 mxmoveseg(文档):
    • 支持迁移任意一个当前为 Mirror 的数据库实例到其他服务器
    • 不支持迁移 Standby
  3. 数据迁移工具 mxshift 功能增强(文档):
    • 支持增量迁移:以表为单位,实现从 Greenplum 4.3.33/5/6 / YMatrix 集群并行迁移目标数据库中部分数据表的数据定义语言(DDL)及数据到新的 YMatrix 集群
    • 支持通过 [database.source.hostname-to-ip] 类别下的参数指定主机名对应的 IP 地址,以保障路由的准确性
    • 新增 install-dir 参数,以替换 gphome 参数
  4. MatrixGate 功能增强:
    • 支持在写入过程中立即执行插入的 DDL 修改指令(文档
    • 支持根据不同写入任务的负载自动调节连接数(文档
    • 支持以百分比数值量化源端数据的写入负载(文档
    • 支持限制批量数据加载的大小(文档
  5. 编码链压缩算法功能增强(文档):
    • 新增 Gorilla2、fds 算法
  6. 图形化界面升级(文档):
    • 新增自助巡检页面,支持通过勾选巡检选项自助制定巡检计划,并生成详细的巡检报告
  7. 国产平台 OpenEuler 20.03-22.03、超聚变(Fusion)22-23、麒麟信安 V3.3-3.5、龙晰(Anolis)OS 8、统信 V20(1060a/1060e)支持(企业版特性)(文档

错误修复

  1. 存储引擎:
    • 修复 AOCS 存储引擎在索引扫描时引发的崩溃问题
    • 修复 MARS2 存储引擎定义超过 32 个 minmax 索引导致的崩溃问题
  2. MatrixGate:
    • 修复 MatrixGate 在启动压缩时导致的内存超用问题
    • 修复 MatrixGate 在处理连接超时引发的内部逻辑错误问题
  3. MatrixManager:
    • 修复 MatrixMgr 由于长时间没有释放连接导致内存超用问题
  4. 执行引擎:
    • 修复 mxvector 在处理 NULL 值时由于没有对齐引发的崩溃问题
    • 修复并行模式下处理 InitPlan 引发的崩溃问题
    • 修复分区表下统计信息计算错误问题
  5. 工具:
    • 修复 mxaddmirrors 命令在处理 AO 存储上 checksum 引发的数据校验错误问题
    • 修复 mxshift 执行导出 DDL 操作时报错的问题

5.0.1 发布介绍

发布日期:2023-06-06


错误修复

  1. 执行引擎:
    • 修复了向量化窗口函数表达式计算导致的崩溃
    • 修复了滑动窗口函数处理分组逻辑导致的崩溃
  2. MatrixGate:
    • 修复了 MatrixGate 在锁住某个表时阻塞其他表入数的问题
  3. 高可用:
    • 改进了 Segment 节点的存活探测方法,提高了在高 I/O 负载下的稳定性

5.0.0 发布介绍

发布日期:2023-03-31


特性发布

  1. 全新数据库架构:

    • 基于 Raft 算法,实现集群主节点(Master)和和主节点备用节点(Standby)的故障自动转移(文档
    • 引入面向服务的架构,使集群的部署,运行和维护更加简单方便(文档
    • 新增集群管理工具:mxaddmirrors(文档)、mxdeletesystem(文档)、mxinitstandby(文档)、mxrecover(文档)、mxstart(文档)、mxstate(文档)、mxstop(文档
    • 支持为 etcd 集群部署监控(文档)
  2. 新增向量化执行引擎(文档):

    • 支持批处理:利用批处理的方式,可以有效减少函数调用等执行开销
    • 充分利用硬件及编译器能力:使用 CPU 缓存友好的算法,从而充分利用硬件以及编译器的优化能力,如生成 SIMD(Single Instruction, Multiple Data)指令
    • 支持多种算子:实现了 Scan、Sort、Aggregate、Join、Window Function、Sub Query、Limit、Motion 等算子,对于同一算子也有不同的算法实现,有效覆盖绝大部分查询场景,提升查询性能

    基于以上三点核心原理,相比面向行处理的传统执行引擎,向量化执行引擎可实现 1 到 2 个数量级的性能提升。

  3. 新增 Runtime Filter 查询性能优化技术(文档):

    • RuntimeFilter 是提升 YMatrix 执行引擎性能的关键技术之一,它 是指在优化器生成物理执行计划后,在执行引擎中估价时,动态构建的过滤器(Filter),区别于优化器预先规划的过滤器。
  4. MARS2 存储引擎性能大幅优化(文档):

    • 优化压缩策略,降低内存使用量
    • 优化分区表写入,降低内存使用量
    • 优化查询过滤效果,减少不必要的 I/O 消耗
    • 优化数据量估计,执行计划的选择更精准
    • 增强聚合能力,支持 uniquemode 和 IN 表达式
  5. 新增编码链压缩算法(文档):

    • 支持多种编码、压缩算法:支持 lz4,zstd,simple8b,doubledelta,gorilla,deltazigzag,floatint 等编码、压缩算法,可灵活组合以上算法,以充分提升压缩率
    • 支持列级或表级自定义压缩算法
    • 支持自适应编码
    • 配合向量化执行引擎使用提升数据压缩 / 解压速度:在 SSB 场景下解压速度是 LZ4 的 3 倍

    编码链压缩方案可大幅减小空间占用,降低成本。在新能源汽车场景,压缩率是使用 LZ4 压缩算法方案的 3.9 倍,在 TSBS(Time Series Benchmark Suite)场景,是 LZ4 的 2.7 倍。

  6. 存储诊断工具 Datainspect 升级(文档):

    • 增加新函数 desc_compress,可以对两种指定压缩算法进行对比择优
  7. MatrixGate 功能增强:

    • 在故障自动转移机制启动时,自动将服务切换到相应健康的备用节点(文档
    • 增加写入数据时的详细监控,方便发现问题时进行调试,可通过 -I 启动参数开启(文档)
    • 针对 stdin 加载场景做了一系列优化,数据加载性能相比 4.8.0 提升了一倍
  8. 新增平滑扩容功能(文档):

    • 支持不停机完成扩容任务
    • 支持自定义数据节点集合(Segment Set),实现对部分表的重分布(文档
    • 支持并行执行表数据重分布
    • 支持连接未重分布表与已重分布表
    • 支持图形化界面一键平滑扩容(文档)
  9. 数据迁移工具 mxshift 功能增强(文档):

    • 以数据库为单位,实现对数据表 DDL 的迁移,并且可选择是否只迁移 DDL
  10. 图形化界面升级:

    • 增加查询监控页面,支持自定义管理页面展示的慢查询信息,可一键终止慢查询(文档
    • 增加写入测试功能,一键体验 YMatrix 强大数据写入性能(文档
    • 增加查询测试功能,支持按照业务场景自定义查询测试方案,一键体验高并发场景下 YMatrix 强劲查询性能(文档
    • 部署页面全新升级,步骤更加简单(文档)
    • 扩容页面全新升级,增加平滑扩容功能,步骤更加轻便(文档)
    • 增加高可用状态检测功能(文档)
  11. 自动分区管理增加新策略 auto_partitioning_ex(文档):

    • 支持批量创建分区
    • 支持强制保留特定历史分区
    • 支持自定义自动分区操作时段