版本发布历史

5.3.4 发布介绍

发布日期:2024-07-19


增强与改进

  1. 存储引擎:
    • 修复了mars3 Rescan crash的问题 (#IA4SAA)
    • 修复了mars3 VindexScan在条件索引情况下的crash问题 (#IA4YOQ)
    • 修复了mars3 BitmapScan在BitmapAnd的情况下的crash问题 (#IA7A16)
  2. 执行引擎:
    • 修复了快速分发器在 extended mode 下支持命名游标(#7536)
    • 修复了 pgvector 插件的 hnsw 索引报错导致无法使用(#7547)
    • 优化了 mars3 存储引擎中行数据向列数据的转换 (#7515)
    • 修复了向量化聚集算子在处理部分类型时的内存泄漏 (#7503)
    • 修复了向量化扫描算子在加载 aocs 上的文本列时可能 crash 的问题 (#IA5N8H)
    • 修复了向量化 IS DISTINCT FROM 表达式中对 NULL 值的处理 (#IA5APT)
    • 修复了向量化哈希聚集算子 v1 版本对分组键上的投影处理 (#IA5OL6)
    • 修复了 mars3 存储引擎中alter table 增加列后,使用默认值填充时对齐的问题 (#IA4RPX)
    • 修复了向量化哈希聚集算子 v2 版本反序列化时类型使用的问题 (#IAA9QI)
    • 支持了向量化版本 in 过滤器为空集和的场景 (IA4R4Z)
    • 优化了向量化 seqscan path 的流程(IA4R4Z)
    • 增强了向量化 motion 的检查 (#IA4RPK)
    • 修复了 mxkv2 反序列化表达式中的kv 问题 (#IA95IP)
    • 修复了 mxkv2 一行输入中带有重复key 时的问题 (#IA9OW3)
    • 修复无法向量化 Subquery 结点的问题(IAAXTQ)
    • 修复了向量化执行器 fallback expr 求值问题 (#IA9ZXC, IAAISQ)
    • 优化了向量化执行器检查表达式是否支持 (#IAA5FL)
    • 修复了向量化执行器哈希聚集hash condistion 选取问题 (#IAA5FL)
    • 修复了nestloop 报错unrecognized join type: 10 问题 (#IA9Z4J)
    • 修复了partition 表distinct agg 可能报错 variable not found in subplan target list 问题 (#IAAWE4)
    • 修复了设置了segment_set 的表 update时 Motion 到错误节点或者触发crash 问题 (#IACDGV, IAD7W9)
    • 修复了 CVE-2024-0985: PostgreSQL non-owner REFRESH MATERIALIZED VIEW CONCURRENTLY executes arbitrary SQL (#IA6KD7)
    • 修复了 CVE-2023-39417: Extension script @substitutions@ within quoting allow SQL injection (#IA6KCP)
    • 修复了 CVE-2023-5870: Role "pg_signal_backend" can signal certain superuser processes (#IA6KC9)
    • 修复了 CVE-2023-5869: Buffer overrun from integer overflow in array modification (#IA6KBU)
    • 修复了 CVE-2023-5868: Memory disclosure in aggregate function calls (#IA6KBE)
    • 修复了 CVE-2023-2455: Row security policies disregard user ID changes after inlining (#IA6KA6)
    • 修复了 CVE-2023-2454: CREATE SCHEMA ... schema_element defeats protective search_path changes (#IA6K9X)
    • 修复了 CVE-2022-2625: Extension scripts replace objects not belonging to the extension (#IA6K8P)
    • 修复了 CVE-2021-32029: Memory disclosure in partitioned-table UPDATE ... RETURNING (#IA6K7G)
    • 修复了 CVE-2021-32028: Memory disclosure in INSERT ... ON CONFLICT ... DO UPDATE (#IA6K76)
    • 修复了 CVE-2021-32027: Buffer overrun from integer overflow in array subscripting calculations (#IA6K6K)
    • 修复了 CVE-2021-23222: libpq processes unencrypted bytes from man-in-the-middle (#IA6K5Z)
    • 修复了 CVE-2021-23214: Server processes unencrypted bytes from man-in-the-middle (#IA6K5D)
    • 修复了 CVE-2021-3677: Memory disclosure in certain queries (#IA6K4Z)
    • 修复了 CVE-2021-3393: Partition constraint violation errors leak values of denied columns (#IA6JTZ)
    • 修复了 CVE-2020-14350: Uncontrolled search path element in CREATE EXTENSION (#IA6JQD)
    • 修复了 CVE-2020-14349: Uncontrolled search path element in logical replication (#IA6JPP)
    • 修复了 CVE-2020-1720: ALTER ... DEPENDS ON EXTENSION is missing authorization checks (#IA6JOV)
  3. MatrixUI
    • 修复 Dashboard 页面集群指标时间展示不正确的问题(#IABL52)
    • 修复在 Ubuntu20 中负载分析页面保存数据采集配置失败的问题(#IAAFSS)
    • 修复在 Ubuntu20 中自助巡检部分 shell 脚本报语法错误的问题(#IA9SZW)
    • 修复了 UI 运行时依赖的安全漏洞问题(#IAD077)
  4. MatrixGate
    • 修复 5.2.2 之后版本出现的进程内存泄露问题(#IAD077)

5.3.3 发布介绍

发布日期:2024-06-14


增强与改进

  1. 工具
    • transfer 模式下,mxgate 连接源端数据库时,设定 idle_in_transaction_session_timeout = 0,防止因为提前传输完毕数据的空闲连接 timeout 导致整个数据传输的失败。(#7506)
    • 为不同数据源的 insert catalog 表以及 insert error log 表添加自动分区功能。(#7499)
  2. 存储引擎
    • MARS3 增加一种新的插入模式 “single”,获得更低的插入延迟。
    • 优化 CV 的创建与 Insert 的长时间阻塞的问题。(#7266)
    • 优化MARS3的ParallelScan中互斥锁的锁内时间。
  3. 执行引擎
    • 增强了向量化窗口算子, 增加了对大部分窗口函数与窗口特性的支持。(#6751)
    • 优化了向量化窗口算子的性能。(#6751)
    • 增强了向量化聚集算子以支持 INTERNAL 类型。(#6881)
    • 增强了对 runtime filter 的支持。(#7049)
    • 增强了单节点分布表以支持任意主键或唯一键。(#7125)
    • 增强了单节点分布表以支持任意触发器。(#7127)
    • 增强了单节点分布表对 ON CONFLICT 从句的支持。(#7168)
    • 增强了快速分发器以支持显式事务。(#7124)
    • 增强了快速分发器以支持 UPDATE & INSERT & DELETE 操作。(#7124)
    • 增强了快速分发器以支持一次处理多条语句。(#7388)
    • 增强了快速分发器对单节点分布表的支持。(#7130)
    • 增强了快速分发器对复制表的支持。(#7131)
    • 增强了快速分发器以支持自增类型。(#7202)
    • 优化了 truncate ON COMMIT DELETE ROWS 临时表的性能。(#7279)
    • 支持了 update table_name set table_name.column_name 语法。
    • 优化了masteronly 模式创建表时,不需要检查节点分别信息。(#7519)
    • matrixmgr: 支持统计查询是否是 fastdd 模式,事务是一阶段、二阶段事务。(#7470)
    • 增强了快速分发器支持了prepare statment 和 extended mode。(#7139)
    • 新增 yonyou 扩展:实现 ROWNUM、to_char、text 与其他类型的隐式转换(#7374 #7375 #7376)

错误修复

  1. 工具

    • 修复了 mxgate 启动时进行 license 检查,当把 license 文件置于 home 目录下无法被正确识别的问题。
    • 修复了 mxgate 向 insert catalog 表插入记录延迟(200ms)导致 mxgate 数据加载变慢的性能问题。(#7277)
  2. 存储引擎

    • 修复了 MARS3 在 timebucket 下 InorderScan 的错误 plan。(#7262)
    • 修复了 MARS3 的 IndexRollback 中的 AssertFail 问题。
    • 修复了 mars2-btree 的多 ScanKey 时候的 Crash。(#7306)
    • 修复了 MARS3 Vaggscan中的可见性问题。(#7303)
    • 修复了 MARS3 的 BrinIndexScan 的 Collation 问题。(#7252)
    • 修复了 MARS3 中 xlog 小概率丢失的问题。
    • 修复了 planner 中 motion 和 ParallelNode 同时存在的数据错误。(#7261)
    • 修复了 MARS3 的 truncate 操作 rollback 问题。
    • 修复了 MARS3 的 Drop Table 死锁问题。
    • 修复了 MARS3 的 StripeDesc 对老版本的兼容性问题。
    • 修复了 MARS3 的 run successor 的 rollback 问题。
    • 修复了 MARS3 在 JDBC driver 下插入数据丢失的问题。
  3. 执行引擎

    • 修复了向量化聚集算子未正确对 first(), last() 聚集的中间值进行序列化的问题。(#7313)
    • 修复了向量化执行器可能未对子查询进行向量化改造的问题。(#6117)
    • 修复了快速分发器可能看到错误版本的 catalog 信息的问题。(#7218)
    • 修复了快速分发器进行 INSERT 等操作时未更新统计信息的问题。(#7405)
    • 修复了持续聚集中可能错误改写表达式导致的 crash。(#7223)
    • 修复了序列化事务快照时可能 crash 的问题。(#7140)
    • 修复了单节点分布表更新操作时错误地生成 split update 与 motion 算子的问题。(#7151)
    • 修复了连接池事务模式下未正确维护 search_path 的问题。(#7132)
    • 修复了 QD & QE 上事务时间戳不一致的问题。(#7362)
    • 修复了 gcc-8 编译问题。(#7424)
    • 修复了 MXKV2 类型在语句出错时未正确清理状态的问题。(#7328)
    • 修复了由于 MARS3 内部生存周期变化引发的 MXKV2 内部的释放顺序问题。(#7309)。
    • 修复了 MXKV2 查询大量 -> 表达式时处理 行存数据时 OOM 问题并优化了性能。(#7387)
    • 修复了向量化窗口函数同时存在多个需要分组信息的函数时触发 Assert 问题。(#7418)
    • 修复了向量化 ShareInputScan 把内存中的数据追加到 Spill 文件时的问题。(#7501)
    • 修复了向量化 Sequence 导致的 cannot execute squelched plan node 问题。(#7485)
    • 修复了 MXKV2 处理 MARS3 unique mode 某个数据块ALLNULL 的问题。(#7487)
    • 修复了 CTAS、materialized view 创建masteronly 表相关的问题。(#7514)
    • 修复了优化器将 subquery 转换为 join 算子执行会报错的问题。(#6524)
    • 修复了快速分发器快速分发模式下避免使用并行扫描。(#7382)
    • 修复了快速分发器 extended mode 下 RETURNING 从句未返回结果的问题。(#7384)
    • 修复了HashJoin 导致的 cannot execute squelched plan node 问题。(#7416)
    • 修复了快速分发器在 extended mode 下 sync 消息错误地被 QE 上 nextval() 当成返回值的问题。(#7397)
    • 修复了单节点分布表当有 parallel worker时,聚集结果错误的问题。(#7445)
    • 修复了快速分发器没有使用正确的 client encoding 的问题。(#7448)
    • 修复了快速分发器在 extended mode 未检查 forceDistRandom 的问题。(#7453)
    • 修复了快速分发器 extended mode 统计信息没有更新的问题。(#7464)
    • 修复了 ShareInputScan、VShareInputScan 的 reader 退出过早导致 writer hang 住的问题(#7471)
    • 修复了单节点表、masteronly 表修改带有 comment 的主键时 Assert 的问题。(#7504)
    • 增强了快速分发器支持显示 QE 上类似 explain analyze 的 plan 和具体执行的信息。(#7522)
    • 修复了快速分发器禁用了对 cursor 的支持。(#7381)
    • 增强了快速分发器支持了 CTE。(#7389)
    • 修复了快速分发器 extended mode 下正确淘汰 PreparedStatement 的机制(#7512)
    • 修复了向量化聚集在存在特定投影函数时 crash 的问题 (#7541)
    • 修复了alter table 时 Assert 的问题 (#7454)

5.3.2 发布介绍

发布日期:2024-04-19


增强与改进

  1. 图形化界面(MatrixUI)
    • 新增 MatrixGate 进程监控页面。提供直观的图形化性能指标展示,简化性能分析。
  2. MatrixGate
    • mxgate_process_view 新增 mxgate_config 字段。(文档
    • [metrics] 类别下的 --metrics-sample-interval 参数默认值从 3 秒调整为 15 秒。(文档
    • pause 动作如果超时(50 秒),则取消对应 Slot 的插入操作,以确保 pause 操作可以正常完成。(文档
    • 将 mxgate 命令帮助手册(mxgate --help)中的 pause 和 resume 由 arguments 调整为 commands。
    • 大量相同的运行日志会被合并显示(10 秒打印一次)。
  3. 向量化执行引擎
    • 升级了向量化查询规划器至 v3。(#3427)
    • 升级了向量化聚集(Agg)算子至 v2。(#3328)
    • 优化了向量化聚集算子对 distinct 运算的支持。(#3355,#3386,#3410)

错误修复

  1. 工具
    • 修复了 mxshift 无法迁移单机集群的问题。(#7257)
    • 修复了 mxshift 在数据分布非常稀疏的情况下数据同步前后行数不一致的问题。(#7251)
  2. MatrixGate
    • 修复了通过 Kafka 写入数据,当微批中只有一条数据的时候,kafka_catalog 中记录的状态不正确的问题。(#3002)
  3. 存储引擎
    • 修复了 MARS3 在关闭向量化后执行特定查询出现 Invalid attribute number 报错的问题。(#7262)
    • 修复了 mars3_btree 索引大小的相关问题 。(#7319)
    • 修复了 mars3_brin 索引在启用 IndexScan 的特定情况下查询结果不正确的问题。(#7276)
    • 修复了执行创建 MARS3 行存 btree 索引 SQL 语句时有一定概率会崩溃的问题。(#7253)
    • 修复了 MARS3 执行 DROP INDEX SQL 语句后执行 ROLLBACK 报错的问题。(#7232)
    • 修复了创建特定 MARS3 表和 mars3_brin 索引性能低下的问题。(#7290)
    • 修复了 mars2_btree 索引存在多个同 attno 上的 arraykey 时会崩溃的问题。(#7306)
    • 修复了 MARS2 下推 like 操作符的 brinkey 时的 collation 报错问题。(#7252)
    • 修复了 MARS3 vaggscan 存在不可见数据时的正确性问题。(#7303)
  4. 执行引擎
    • 修复了向量化查询计划对 Runtime Filter 的处理。(#3329,#3347)
    • 修复了向量化查询计划中可能出现非法算子的问题。(#7186)
    • 修复了向量化聚集算子未正确处理 PLAIN 聚集的问题。(#3332)
    • 修复了向量化聚集算子不支持 INTERMEDIATE 子模式的问题。(#7061)
    • 修复了向量化联合算子对过滤器的支持。(#3350)
  5. MXKV2
    • 修复了存在 MXKV2 列的表通过 ALTER TABLE 添加新列产生报错的问题。(#7274)
    • 修复了由于 MARS3 内部生存周期变化引发的 MXKV2 内部的释放顺序问题。(#7309)

5.3.1 发布介绍

发布日期:2024-03-29


增强与改进

  1. 持续聚集(CV)
    • 持续聚集的底层存储默认索引由 mars3_brin(v5.2.0-v5.3.0)更改为 mars3_btree(v5.3.1 开始)。

错误修复

  1. RMGR
    • 修复了 5.3.0 中 RMGR(资源管理器)不兼容的问题。(#3409)

5.3.0 发布介绍

发布日期:2024-03-22


特性发布

  1. 图形化界面(MatrixUI)
    • 新增首页,提供资源指标分析和查询统计分析功能。
    • 新增英文版界面。
  2. 数据节点实例(Segment)迁移工具 mxmoveseg
    • 支持迁移备用主节点(Standby)。(文档
  3. MatrixGate
    • 支持查询 mxgate 数据写入进程信息、插入系统表和错误日志。(文档
    • 精细化 --log-dir 参数指定目录(通常为 /home/mxadmin/gpAdminLogs)下 mxgate 日志中的 timing 信息。将原本的 4 个时间段调整为 5 个:t1: Slot insert 建立连接的时间; t2: Slot 等待被调度的时间 t3: Segment 从 mxgate 接收数据的时间 t4: 数据在 Segment 之间重分布和落盘的时间 t5: insert 事务提交的时间。

增强与改进

  1. 数据节点实例(Segment)迁移工具 mxmoveseg(文档
    • 源迁移服务器为离线状态时,离线的旧服务器在迁移完成后也可以重新开启,不会导致集群异常。
  2. 高可用
    • 修复了在配置了 Standby / Mirror 的集群中,因网络不稳定出现 double failure 的问题(一个数据分片(Shard)下的所有数据实例(包含一个 Primary 和它对应的 Mirror)都离线)。
  3. mxshift 功能增强
    • 支持数据迁移与检验解耦。(文档
    • 迁移前后数据一致性检验算法升级。除通过配置 [transfer] 类别下的 --verify 参数进行校验外,增加了 [verify] 类别,可通过配置其中参数进行升级版校验。两种校验方式相互兼容。(文档
  4. 向量化执行引擎功能增强
    • 实现了向量化共享扫描算子。
    • 实现了向量化去重算子。
    • 优化了向量化执行器使用 ORCA 优化器时的稳定性。
    • 优化了向量化连接算子在右连接时的性能表现。
  5. MARS3 存储引擎功能增强
    • 增加了 MARS3 存储引擎对 btree 索引的支持。
    • 优化了 MARS3 存储与 ORCA 配合时的稳定性。
  6. MatrixGate 功能增强
    • 支持通过发送 gRPC 请求终止正在监听指定端口的 mxgate 进程。对应命令为:mxgate stop --grpc-port [port]。(文档

错误修复

  1. 工具
    • 修复了 mxshift 在 mode="output" 时,若存在一批有依赖关系的视图(一个视图的内容来源于 SELECT 另一个视图)且并发度较高,则会偶发 ... view .... not exist 错误的问题。(#6907)
    • 修复了 mxshift 当 disable-connector=false 时,使用非默认 superuser 迁移会出现 no pg_hba.con entry for host 127.0.0.1 错误的问题。
  2. 执行引擎
    • 修复了 motion 算子在特定情况下会崩溃的问题。(#3281)
    • 修复了向量化连接算子在特定情况下会崩溃的问题。 (#3263)
    • 修复了向量化执行引擎在特定情况下会崩溃的问题。(#3230)
    • 修复了向量化聚集算子在特定情况下会崩溃的问题。(#3223)
    • 修复了向量化执行引擎在特定情况下无法自动查询的问题。(#3280)
    • 修复了向量化索引扫描算子在特定情况下会崩溃的问题。(#3301, #3310)
    • 修复了窗口算子在滑动窗口时可能给出错误结果的问题。(#3302)
    • 修复了向量化扫描类算子在遇到一次性过滤器时可能会崩溃的问题。(#3314)
  3. 数据类型
    • 优化了 MXKV2 的内存使用。(#3204)
  4. 优化器
    • 修复了 ORCA 在特定情况下无法生成查询计划的问题。(#3270)
  5. 查询引擎
    • 修复了 first(), last() 函数在输入含有空值时结果可能出错的问题。(#3292)
    • 修复了滑动窗口 varchar 属性未知结果的问题。(#3229)
  6. MatrixGate
    • 修复了 Kafka source,consumer-group 模式下连接 Kafka 集群超时的问题。(#6848)
    • 修复了 Job 被暂停后无法更新表元信息的问题。(#6966)
    • 修复了用户发送空数据可能会导致 Job 的 Slot 状态错乱的问题。(#7026)
    • 修复了当把输入的 JSON 数据转换为 CSV 或 TEXT 类型时,可能会导致默认值获取错误的问题。(#6550)
    • 修复了用户在 mxgate 刚启动时调节 stream-prepared 数量,会导致 Slot 状态不一致的问题。(#7113)
  7. 存储引擎
    • 修复了 MARS3 中 ActiveSnapshot 没有被正确 Pop 的问题。(#3218)
    • 修复了 MARS3 VACUUM freeze 的问题。(#3226)
    • 修复了 MARS3 在特定场景下不能选取正确的 Run 的问题。(#3224)
    • 修复了 MARS2 中 btree 索引在处理 arrary search 特定表达式时会崩溃的问题。(#3246)
    • 修复了 MARS3 在特定场景下 compact job 锁并发控制的问题。(#3234)
    • 修复了 MARS3 中 brin 索引并行扫描中不正确的快拍。(#3253)
    • 修复了 MARS2 在特定场景下 btree 索引结果不正确的问题。(#3297)
    • 修复了特定场景下 direct dispatch 崩溃时 QE 连接不能正确清理的问题。

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(文档

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