版本发布历史
5.3.2 发布介绍
发布日期:2024-04-19
增强与改进
- 图形化界面(MatrixUI)
- 新增 MatrixGate 进程监控页面。提供直观的图形化性能指标展示,简化性能分析。
- MatrixGate
- 向量化执行引擎
- 升级了向量化查询规划器至 v3。(#3427)
- 升级了向量化聚集(Agg)算子至 v2。(#3328)
- 优化了向量化聚集算子对 distinct 运算的支持。(#3355,#3386,#3410)
错误修复
- 工具
- 修复了 mxshift 无法迁移单机集群的问题。(#7257)
- 修复了 mxshift 在数据分布非常稀疏的情况下数据同步前后行数不一致的问题。(#7251)
- MatrixGate
- 修复了通过 Kafka 写入数据,当微批中只有一条数据的时候,kafka_catalog 中记录的状态不正确的问题。(#3002)
- 存储引擎
- 修复了 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)
- 执行引擎
- 修复了向量化查询计划对 Runtime Filter 的处理。(#3329,#3347)
- 修复了向量化查询计划中可能出现非法算子的问题。(#7186)
- 修复了向量化聚集算子未正确处理 PLAIN 聚集的问题。(#3332)
- 修复了向量化聚集算子不支持 INTERMEDIATE 子模式的问题。(#7061)
- 修复了向量化联合算子对过滤器的支持。(#3350)
- MXKV2
- 修复了存在 MXKV2 列的表通过 ALTER TABLE 添加新列产生报错的问题。(#7274)
- 修复了由于 MARS3 内部生存周期变化引发的 MXKV2 内部的释放顺序问题。(#7309)
5.3.1 发布介绍
发布日期:2024-03-29
增强与改进
- 持续聚集(CV)
- 持续聚集的底层存储默认索引由 mars3_brin(v5.2.0-v5.3.0)更改为 mars3_btree(v5.3.1 开始)。
错误修复
- RMGR
- 修复了 5.3.0 中 RMGR(资源管理器)不兼容的问题。(#3409)
5.3.0 发布介绍
发布日期:2024-03-22
特性发布
- 图形化界面(MatrixUI)
- 新增首页,提供资源指标分析和查询统计分析功能。
- 新增英文版界面。
- 数据节点实例(Segment)迁移工具 mxmoveseg
- 支持迁移备用主节点(Standby)。(文档)
- MatrixGate
- 支持查询 mxgate 数据写入进程信息、插入系统表和错误日志。(文档)
- 精细化 --log-dir 参数指定目录(通常为 /home/mxadmin/gpAdminLogs)下 mxgate 日志中的 timing 信息。将原本的 4 个时间段调整为 5 个:t1: Slot insert 建立连接的时间; t2: Slot 等待被调度的时间 t3: Segment 从 mxgate 接收数据的时间 t4: 数据在 Segment 之间重分布和落盘的时间 t5: insert 事务提交的时间。
增强与改进
- 数据节点实例(Segment)迁移工具 mxmoveseg(文档)
- 源迁移服务器为离线状态时,离线的旧服务器在迁移完成后也可以重新开启,不会导致集群异常。
- 高可用
- 修复了在配置了 Standby / Mirror 的集群中,因网络不稳定出现 double failure 的问题(一个数据分片(Shard)下的所有数据实例(包含一个 Primary 和它对应的 Mirror)都离线)。
- mxshift 功能增强
- 向量化执行引擎功能增强
- 实现了向量化共享扫描算子。
- 实现了向量化去重算子。
- 优化了向量化执行器使用 ORCA 优化器时的稳定性。
- 优化了向量化连接算子在右连接时的性能表现。
- MARS3 存储引擎功能增强
- 增加了 MARS3 存储引擎对 btree 索引的支持。
- 优化了 MARS3 存储与 ORCA 配合时的稳定性。
- MatrixGate 功能增强
- 支持通过发送 gRPC 请求终止正在监听指定端口的 mxgate 进程。对应命令为:mxgate stop --grpc-port [port]。(文档)
错误修复
- 工具
- 修复了 mxshift 在 mode="output" 时,若存在一批有依赖关系的视图(一个视图的内容来源于 SELECT 另一个视图)且并发度较高,则会偶发 ... view .... not exist 错误的问题。(#6907)
- 修复了 mxshift 当 disable-connector=false 时,使用非默认 superuser 迁移会出现 no pg_hba.con entry for host 127.0.0.1 错误的问题。
- 执行引擎
- 修复了 motion 算子在特定情况下会崩溃的问题。(#3281)
- 修复了向量化连接算子在特定情况下会崩溃的问题。 (#3263)
- 修复了向量化执行引擎在特定情况下会崩溃的问题。(#3230)
- 修复了向量化聚集算子在特定情况下会崩溃的问题。(#3223)
- 修复了向量化执行引擎在特定情况下无法自动查询的问题。(#3280)
- 修复了向量化索引扫描算子在特定情况下会崩溃的问题。(#3301, #3310)
- 修复了窗口算子在滑动窗口时可能给出错误结果的问题。(#3302)
- 修复了向量化扫描类算子在遇到一次性过滤器时可能会崩溃的问题。(#3314)
- 数据类型
- 优化了 MXKV2 的内存使用。(#3204)
- 优化器
- 修复了 ORCA 在特定情况下无法生成查询计划的问题。(#3270)
- 查询引擎
- 修复了 first(), last() 函数在输入含有空值时结果可能出错的问题。(#3292)
- 修复了滑动窗口 varchar 属性未知结果的问题。(#3229)
- MatrixGate
- 修复了 Kafka source,consumer-group 模式下连接 Kafka 集群超时的问题。(#6848)
- 修复了 Job 被暂停后无法更新表元信息的问题。(#6966)
- 修复了用户发送空数据可能会导致 Job 的 Slot 状态错乱的问题。(#7026)
- 修复了当把输入的 JSON 数据转换为 CSV 或 TEXT 类型时,可能会导致默认值获取错误的问题。(#6550)
- 修复了用户在 mxgate 刚启动时调节 stream-prepared 数量,会导致 Slot 状态不一致的问题。(#7113)
- 存储引擎
- 修复了 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
错误修复
- MatrixGate
- 修复了迁移模式中,数据通道连接数量超过源集群 Segment 的数量时,数据迁移会报错并中止的问题。(#6800)
- 修复了当主节点(Master)发生故障自动转移(Failover)自动切换到备用节点(Standby)后,MatrixGate(mxgate)无法响应数据定义语言(DDL)变更而自动刷新任务的问题。(#6850)
- 修复了当目标表不存在时,用户通过 MatrixUI 中 Kafka 数据流功能配置的 mxgate 服务会被 supervisor 进程反复重启的问题。(#6928-1)
- 修复了通过多个浏览器窗口同时创建 Kafka 数据流时,后台启动的 mxgate 端口可能冲突的问题。(#6928-2)
- 工具
- 修复了 mxshift 当源端数据库与目标端数据库异构(主机数、节点数不同)时,启动 mxshift 可能报错 (错误信息:/tmp/mxshift/mxshift_worker.xxxx 不存在)的问题。此问题仅存在于 5.2.1 版本,更早版本均不受影响。已经升级到 5.2.1 版本的用户可以直接拷贝 5.2.2 版本的 mxshift 使用。(#6909)
- Cylinder
- 修复了当 .psqlrc 文件存在 \timing 设置时,cylinder不能正确采集数据表统计信息的问题。此问题仅存在于 5.2.1 版本,更早版本不受影响。(#6860)
5.2.1 发布介绍
发布日期:2024-01-02
增强与改进
- MXKV2
- 优化了 MXKV2 的内存使用(#3178)。
- 优化了 MXKV2 的压缩效果(#3180)。
- 优化 了MXKV2 的数据导入性能(#3162)。
- 向量化执行引擎
- 优化了向量化 motion 算子在多列查询中的内存使用(#3175)。
- 优化了向量化哈希聚集的外部哈希算法的性能(#3213)。
- 优化了文本类型的顺序比较效率(#3163)。
错误修复
- MatrixGate
- 修复了 Kafka 数据源使用 consumer-group 模式时,当数据库发生重启/崩溃后,MatrixGate 有概率无法继续从 consumer-group 抽取到数据的问题(#6848)。
- 图形化界面
- 修复了当 mxstat_statements.harvest_interval 配置为非默认值时,负载分析页面报错及显示异常的问题(#6768)。
- 持续聚集
- 修复了持续聚集(Continuous View,简称 CV) 在 groupagg 算子关闭下创建失败的问题(#6823)。
- 修复了 CV 内存释放顺序错误导致的异常退出问题(#6766)。
- 存储引擎
- 修复了 MARS3 的前后台进程死锁的问题(#6816)。
- 修复了 MARS2 因增删列导致的 Option 空指针问题。
- 资源组
- 修复了资源组模式预加载的 bgworker 会在启动过程崩溃的问题(#3169)。
- 修复了资源组对 cgroup 路径的处理问题(#3169)。
- 修复了资源组可能给出错误的状态统计信息的问题(#3198)。
- 执行引擎
- 修复了 AssertOp 算子初始化过程中可能崩溃的问题(#3183)。
- 修复了 AOCO 表在向量化扫描过程中可能崩溃的问题(#3158)。
- 修复子计划中由于 minmax agg 算子优化导致崩溃的问题(#3190)。
- 修复了在特定条件下 MARS2 向量化扫描崩溃的问题(#3151)。
- 修复了向量化共享扫描在特定条件下崩溃的问题(#3082)。
- 修复了向量化算子在查询调度器(Query Dispatcher,简称QD)进程和查询执行器(Query Executor,简称 QE)进程上可能看到不一致的开关的问题(#3109)。
- 修复了部分向量化算子只能使用较小量内存的问题(#6626)。
- 数据类型
- 修复了 MXKV2 列可能未被正确配置的问题(#3172)。
- 修复了 MXKV2 在特定场合下的 NULL 值处理(#3176)。
- 修复了 MXKV2 在特定条件下错误地下推了表达式的问题(#3131)。
- 修复了 MXKV2 数据可见性问题(#3149)。
- 修复了 MXKV2 类型在某些场景下生成了无用索引的问题(#3149)。
5.2.0 发布介绍
发布日期:2023-12-08
特性发布
- 图形化界面
- 支持 YMatrix 在统信 UOS20、龙蜥 8.X、麒麟信安 3.X、中标麒麟 7.X 操作系统上的图形化安装部署。
- 新增 SQL 执行器功能。
- 新增负载分析功能(文档)。
- 向量化执行引擎(文档)
- 支持对接 ORCA 优化器。HEAP,AO 存储引擎支持直接对接,MARS2/3 不支持对接。特别地, AOCO 可以同时对接向量化执行引擎和 ORCA。
- 新增降级存储功能,支持数据自动冷热分离,冷数据降级存储至更经济的对象存储中(文档)。
- 新增数据类型 MXKV2,在 MXKV 基础上简化了使用步骤并提高了压缩性能(文档)。
- 新增 pgvector 插件工具以支持向量场景(文档)。
增强与改进
- 持续聚集参数 populate 默认值更改为 false(文档)。
- 原有两个 RPM 包合二为一,体积可能变大。但用户无需额外再安装 DebugInfo 包,这对于业务环境的调试与分析更加有利。
- MatrixGate
- 图形化界面
- 数据迁移工具 mxshift
- DDL(Data Definition Language)迁移过程允许忽略指定错误继续执行。可通过 --ignore-error 参数配置忽略的错误种类(文档)。
- 简化了迁移过程的权限授权,仅通过配置源集群对目标集群 Master 节点的访问权限即可。如需关闭此功能,配置 --disable-connector=true(文档)。
- 支持日志分离,终端输出的日志和文件保存的日志存在格式区别,优化了用户体验。
- 支持通过配置 --write-table-meta-file 参数将迁移表元信息写到指定文件,并在后续迁移过程中通过 --read-table-meta-file 参数直接读取该文件中信息,以缩短迁移导致的业务停机时间(文档)。
- 新增 --small-table-mb 参数,合理配置该参数可优化小表传输速度(文档)。
- 支持动态调整并发数(文档)。
错误修复
- 优化器
- 修复了分区表上无法生成 ORCA 查询计划的问题(#6104)。
- 执行引擎
- 修复了向量化执行器在 EXPLAIN ANALYZE 信息为空时会崩溃的问题(#6634)。
- 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)。
- 存储引擎
- 修复了 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)。
- 数据类型
- 修复了 MXKV2 在特定情况下会崩溃的问题(#6466,#6409,#6568,#6544)。
- 修复了 MXKV2 在主表删除后可能残留附属表的问题(#6408)。
5.1.3 发布介绍
发布日期:2023-09-25
错误修复
- MatrixGate
- 优化 zstd 压缩句柄的内存释放周期,减少 mxgated 进程内存占用(#6299)
- 修复了当集群存在 Standby 节点时,MatrixGate 建立的数据库会话无法定期刷新的问题(#6308)
5.1.2 发布介绍
发布日期:2023-09-11
错误修复
- 存储引擎
- 修复 MARS3 表由于 L0 缓存层的数据并发写入异常,导致查询异常的问题(#6155)
- MatrixGate
- 修复数据表在自动分区过程中 MatrixGate 因内部超时未将任务恢复,导致无法继续入数的问题(#6165)
5.1.1 发布介绍
发布日期:2023-08-25
错误修复
- 存储引擎
- 修复 MARS3 存储引擎 uniquemode 模式下 redo log 的问题
5.1.0 发布介绍
发布日期:2023-08-22
特性发布
- 新增 MARS3 存储引擎(文档),其与 MARS2 相比
- 实现行列混存,写入数据行存落盘,大幅提升写入性能
- 无需额外创建索引即可完成建表
- 支持数据的更新与删除,支持增删列,支持 MVCC 机制
- 不仅继承了 MARS2 时序场景下的性能优势,还增添了对 AP 和 TP 场景的支持
- 新增镜像实例迁移工具 mxmoveseg(文档)
- 支持迁移任意一个当前为 Mirror 的数据库实例到其他服务器
- 不支持迁移 Standby
- 数据迁移工具 mxshift 功能增强(文档)
- 支持增量迁移:以表为单位,实现从 Greenplum 4.3.33/5/6 / YMatrix 集群并行迁移目标数据库中部分数据表的数据定义语言(DDL)及数据到新的 YMatrix 集群
- 支持通过 [database.source.hostname-to-ip] 类别下的参数指定主机名对应的 IP 地址,以保障路由的准确性
- 新增 install-dir 参数,以替换 gphome 参数
- MatrixGate 功能增强
- 编码链压缩算法功能增强(文档)
- 新增 Gorilla2、fds 算法
- 图形化界面升级(文档)
- 新增自助巡检页面,支持通过勾选巡检选项自助制定巡检计划,并生成详细的巡检报告
- 国产平台 OpenEuler 20.03-22.03、超聚变(Fusion)22-23、麒麟信安 V3.3-3.5、龙晰(Anolis)OS 8、统信 V20(1060a/1060e)支持(企业版特性)(文档)
错误修复
- 存储引擎
- 修复 AOCS 存储引擎在索引扫描时引发的崩溃问题
- 修复 MARS2 存储引擎定义超过 32 个 minmax 索引导致的崩溃问题
- MatrixGate
- 修复 MatrixGate 在启动压缩时导致的内存超用问题
- 修复 MatrixGate 在处理连接超时引发的内部逻辑错误问题
- MatrixManager
- 修复 MatrixMgr 由于长时间没有释放连接导致内存超用问题
- 执行引擎
- 修复 mxvector 在处理 NULL 值时由于没有对齐引发的崩溃问题
- 修复并行模式下处理 InitPlan 引发的崩溃问题
- 修复分区表下统计信息计算错误问题
- 工具
- 修复 mxaddmirrors 命令在处理 AO 存储上 checksum 引发的数据校验错误问题
- 修复 mxshift 执行导出 DDL 操作时报错的问题
5.0.1 发布介绍
发布日期:2023-06-06
错误修复
- 执行引擎
- 修复了向量化窗口函数表达式计算导致的崩溃
- 修复了滑动窗口函数处理分组逻辑导致的崩溃
- MatrixGate
- 修复了 MatrixGate 在锁住某个表时阻塞其他表入数的问题
- 高可用
- 改进了 Segment 节点的存活探测方法,提高了在高 I/O 负载下的稳定性
5.0.0 发布介绍
发布日期:2023-03-31
特性发布
-
全新数据库架构
-
新增向量化执行引擎(文档)
- 支持批处理:利用批处理的方式,可以有效减少函数调用等执行开销
- 充分利用硬件及编译器能力:使用 CPU 缓存友好的算法,从而充分利用硬件以及编译器的优化能力,如生成 SIMD(Single Instruction, Multiple Data)指令
- 支持多种算子:实现了 Scan、Sort、Aggregate、Join、Window Function、Sub Query、Limit、Motion 等算子,对于同一算子也有不同的算法实现,有效覆盖绝大部分查询场景,提升查询性能
基于以上三点核心原理,相比面向行处理的传统执行引擎,向量化执行引擎可实现 1 到 2 个数量级的性能提升。
-
新增 Runtime Filter 查询性能优化技术(文档)
- RuntimeFilter 是提升 YMatrix 执行引擎性能的关键技术之一,它 是指在优化器生成物理执行计划后,在执行引擎中估价时,动态构建的过滤器(Filter),区别于优化器预先规划的过滤器。
-
MARS2 存储引擎性能大幅优化(文档)
- 优化压缩策略,降低内存使用量
- 优化分区表写入,降低内存使用量
- 优化查询过滤效果,减少不必要的 I/O 消耗
- 优化数据量估计,执行计划的选择更精准
- 增强聚合能力,支持 uniquemode 和 IN 表达式
-
新增编码链压缩算法(文档)
- 支持多种编码、压缩算法:支持 lz4,zstd,simple8b,doubledelta,gorilla,deltazigzag,floatint 等编码、压缩算法,可灵活组合以上算法,以充分提升压缩率
- 支持列级或表级自定义压缩算法
- 支持自适应编码
- 配合向量化执行引擎使用提升数据压缩 / 解压速度:在 SSB 场景下解压速度是 LZ4 的 3 倍
编码链压缩方案可大幅减小空间占用,降低成本。在新能源汽车场景,压缩率是使用 LZ4 压缩算法方案的 3.9 倍,在 TSBS(Time Series Benchmark Suite)场景,是 LZ4 的 2.7 倍。
-
存储诊断工具 Datainspect 升级(文档)
- 增加新函数 desc_compress,可以对两种指定压缩算法进行对比择优
-
MatrixGate 功能增强
-
新增平滑扩容功能(文档)
-
数据迁移工具 mxshift 功能增强(文档)
- 以数据库为单位,实现对数据表 DDL 的迁移,并且可选择是否只迁移 DDL
-
图形化界面升级
-
自动分区管理增加新策略 auto_partitioning_ex(文档)
- 支持批量创建分区
- 支持强制保留特定历史分区
- 支持自定义自动分区操作时段