文档中心MogDBMogDB StackUqbar
v5.0

文档:v5.0

支持的版本:

其他版本:

MogDB 5.0.0

1. 版本说明

MogDB 5.0.0版本于2023年07月14日正式发布。作为LTS版本,基于3.0/3.1版本进一步增强,并引入了openGauss 5.0.0版本的新增特性。

2. 新增特性

2.1 集成openGauss 5.0.0版本新特性

  • 高性能:基础算子性能提升
  • 高安全:用户级别审计
  • 高可用:CM支持VIP管理
  • 高可用:CM支持两节点部署
  • 高可用:CM磁盘只读检测能力增强
  • 高可用:CM易用性提升
  • 高智能:异常检测支持自配置
  • 企业级特性:事件触发器
  • 应用开发接口:JDBC能力增强
  • 兼容性:兼容MySQL包括数据类型、操作符、系统函数、DDL、DML、DCL、PL/SQL等在内的绝大部分常用语法,实现应用近似零修改迁移

2.2 并行索引扫描

在使用索引进行查询(IndexScan、IndexOnlyScan)的场景,使用多线程并行对索引进行扫描,典型场景下端到端性能可提升10%以上。

  • 支持普通表及分区表

  • 根据代价评估自动判断是否启用并行索引扫描机制

  • 优化Stream算子,提高并行扫描线程间数据合并处理速率

相关页面并行索引扫描

2.3 并行查询性能优化

对以下算子进行并行查询改造,更好地利用多核处理器和内存资源,提升算子查询性能:

  • 并行 sort merge join:当系统配置允许并行执行,并且执行计划适合并行执行时,可以使用多个线程同时扫描和匹配关联列,从而加速连接操作的执行速度;

  • 自适应两阶段 hash agg.:当执行聚合查询时,根据实际数据和查询条件的特点,在适合自适应两阶段哈希聚合的场景下,可以避免不必要的内存和磁盘开销,提升查询性能约6%至17%;

  • 运行时结果缓存:在部分查询中,如果查询结果可以被重用,MogDB会将结果缓存在内存中,以便后续查询可以重复使用,这样可以减少重复计算和磁盘访问的开销,提高查询性能;

相关页面并行查询优化自适应两阶段哈希聚合

2.4 排序算子性能优化

针对不同场景的排序算子进行针对性优化,降低资源消耗,提升排序算子性能:

  • 快速排序:对于定长字段类型的排序,通过消除大量比较函数调用开销,通常可以获得2%~5%的性能提升;

  • 增量排序:对指定字段组合进行排序时,当其中前缀字段组合可以利用上索引或中间查询结果的有序性时,将全量排序优化为增量排序,从而减少排序需要处理的数据量,进而提升性能,配合limit场景使用时,可以带来10~100倍的性能提升效果;

相关页面排序算子优化

2.5 SQL Bypass增强

SQL Bypass是针对简单SQL的查询优化技术,本版本扩展了SQL Bypass的适用场景:

  • 带有非索引列作为过滤条件的查询语句,通过使能SQL Bypass功能,大数据量下查询性能可提升10%以上,PBE场景下性能提升效果更加明显。

相关页面SQL Bypass

2.6 行存表行级压缩

在数据写入aStore行存表时,后台对数据进行压缩,典型场景下可以获得50%的存储空间节省,同时通过后台流控技术减少对系统资源的占用,性能几乎无损。

  • 以记录行为单位进行压缩解压,对于OLTP点查场景,只需要解压一行数据,没有解压放大,能够获得更好的查询性能;

  • 内存中的页面为压缩状态,在相同Shared Buffer大小下可以提供更高的内存命中率,进而提升查询性能;

  • 在MVCC(多版本并发控制)查找历史版本链时,无需解压中间版本,只需要解压目标版本的数据行。这样可以大大减少解压的工作量,提高查询性能;

  • 采用多数据页共享字典的方案,相比单表训练字典的方案,压缩字典可以随数据的变更自动演进,没有字典逐渐失效的问题。

相关页面Astore行级压缩

2.7 非唯一索引压缩

当数据表中创建有B+Tree类型的非唯一索引时,索引中存在多个重复的key/value键值对,通过将多个相同key的key/value键值对合并压缩成一个key->value list的方式,能够获得50%的索引空间节省,同时还能提升索引页面的内存命中率,进而提升index scan的性能。

相关页面BTree索引压缩

2.8 gstrace增强

gstrace是用于跟踪内核代码执行路径、记录内核数据结构和分析代码性能的工具,可以帮助开发人员深入了解内核代码的执行情况,提高问题定位效率,本版本在以下几个方面进行增强:

  • 支持在生产环境下进行追踪观测:gstrace可以在不停库的情况下工作,允许用户指定一个或多个模块和函数进行追踪观测,这样可以避免对系统的正常运行造成干扰,并保证生产环境的稳定性;

  • 导出SQL执行细节:gstrace可以记录SQL执行的详细信息,包括查询语句、执行计划、运行时间等等,这些信息可以用于后续的故障分析,帮助快速定位和解决问题,从而提高诊断效率;

  • 支持追踪分析的模块:目前gstrace主要支持追踪walwriter模块、pagewriter模块和checkpointer模块,这些模块在数据库系统中具有重要的作用,通过追踪它们的执行路径和记录相关的数据结构,可以深入了解系统的运行情况,从而进行性能优化和故障排查;

  • 轻量级锁的导出分析:gstrace还支持对轻量级锁进行导出分析,轻量级锁是一种用于提高多线程并发访问效率的锁机制,在数据库系统中广泛应用,通过对轻量级锁的追踪和分析,可以帮助发现和解决潜在的线程安全问题;

  • 追踪会话和线程:gstrace支持追踪一个或多个会话和线程,这样可以精确地定位到特定的会话或线程,进行详细的分析和调试;

  • DCF模块功能增强:MogDB 5.0 版本增加了针对DCF模块打开trace的功能。通过指定gstrace追踪DCF模块可以获取DCF相关的函数调用信息及关键数据结构的具体信息。从而帮助开发调试人员快速定位问题,提高诊断效率。

相关页面gstrace轻量级锁导出与分析DCF模块追踪SQL trace观测功能后台关键线程trace观测增强

2.9 CM(Cluster Manager)集群支持两节点部署

CM集群支持两节点部署,通过引入第三方网关作为仲裁节点实现多数派仲裁机制,将集群起配成本从3节点降低为2节点:

  • 当集群网络正常时,CM主备实例中的任意一方发起选举时,只要与第三方网关IP通信成功,就会增加自身的票数,以此实现多数派决策;
  • 当集群网络状态异常时,CM主备实例中的任意一方发现和对端CM实例通信异常,但与第三方网关IP通信正常,就会认为对端可能存在故障。如果是CM主节点则会执行降备流程,如果是CM备节点则会根据配置项来判断是否执行升主实现自动故障切换;
  • 提供可选配置来决定网络分区场景下备机是否升主,避免脑裂问题的发生。

相关页面CM集群支持两节点部署

2.10 Oracle兼容性增强

【1】支持PROCEDURE/FUNCTION/PACKAGE的end后的name和oracle保持一致

【2】支持PLPGSQL subtype

【3】视图增加%rowtype属性

【4】支持Oracle DBLink兼容

【5】支持包内常量作为函数或者过程入参的默认值

【6】支持current_date,current_time等保留关键字可以作为表的字段名

【7】MogDB支持Insert All特性

【8】For Update支持外连接

【9】支持dbms_utility.format_error_backtrace

【10】支持在数组extend的参数中传入数组的count属性

【11】支持Oracle中的自定义type数组

【12】支持Merge into命中索引时增加使用bypass方法

【13】支持where current of的写法

【14】Agg函数支持Keep子句

【15】Agg支持场景扩展

【16】支持两个date类型的数据相减,返回numeric类型

【17】支持表函数table()

【18】支持创建 package/function/procedure时,去除type类型转换提示

【19】支持q quote转义字符

【20】支持无参数function的同义词调用可以不加括号

【21】支持增加存储过程及函数参数的nocopy属性

【22】Agg(distinct)性能优化

3. 修复缺陷

3.1 集成openGauss 5.0.0版本修复缺陷

  • I6NVAB 3.0.3版本灰度升级到5.0.0版本后回滚和强制回滚均报错

  • I6NK8U 修改发布/订阅名为已存在的名称,报错ERROR: unsupported object class xxx

  • I6N2QD similar to在使用escape时,逃逸字符为汉字,报错;like逃逸字符为汉字,成功

  • I6MOCS 兼容性b库下,对于二级分区表分区键为year函数时,在进行add partition操作后,使用pg_get_tabledef会报未知错误

  • I6LMTU B兼容模式下,不支持反引号包裹对象

  • I6KO5S 【资源池化】共享存储升级,执行升级命令,升级失败

  • I6KRZ6 【资源池化】dsscmd du -p +data -f a命令实际上只计算了目录,没有计算文件

  • I6IZH9 【资源池化】reform失败没有进入下一轮,集群卡主

  • I6O0K6 2.0.1、2.0.0和2.0.5版本不带cm工具灰度升级到5.0.0带cm工具后提交失败

  • I61OX7 cm_agent参数log_dir值改为空无合理报错,且重启cm_agent生效后不再生成新的cm_agent日志

  • I6K2BZ 变色龙迁移由于双引号问题导致部分迁移失败

  • I6KIWQ Debezium+kafka增量迁移,timestamp等时间戳类型,迁移后时间有误

  • I6I640 使用数据校验工具校验15W张表的数据时,校验进程一直是卡住状态

3.2 MogDB 5.0.0版本修复缺陷

  • 修复同样的sql中对同一张表进行采样,指定相同的随机数种子seed,返回结果不同的问题

  • 修复xlogdump导出identity full的delete event存在的问题

  • dolphin在开启线程池情况下,概率性出现mutex死锁问题

  • 备机扩展段页式空间时异常退出

  • 【TPCH】ERROR: Stream plan check failed

  • TPCH 列存下Q20选择错误的查询计划导致查询慢

  • 1000个warehouse高并发tpcc执行半小时后switchover耗时过长

  • gpi_interval测试样例在mogdb_function上偶发性报错

4. 兼容性

5.0版本支持以下操作系统及CPU架构组合:

操作系统 CPU架构 备注
CentOS 7.x X86_64 (Intel,AMD,海光,兆芯)
Redhat 7.x X86_64 (Intel,AMD,海光,兆芯)
openEuler 20.03LTS ARM(鲲鹏)、X86_64 (Intel,AMD,海光,兆芯) 当前版本暂未通过兼容性验证,5.0.1支持
银河麒麟V10 ARM(鲲鹏)、X86_64 (Intel,AMD,海光,兆芯) OM组件暂不兼容Kylin V10 sp2升级补丁中的openssh-8.2p1-9.p06以上版本(包括p06、p07、p08、p09)
统信UOS V20-D / V20-E ARM(鲲鹏)、X86_64 (Intel,AMD,海光,兆芯) 当前版本暂未通过兼容性验证,5.0.1支持
统信UOS V20-A X86_64 (Intel,AMD,海光,兆芯) 当前版本暂未通过兼容性验证,5.0.1支持
Copyright © 2011-2024 www.enmotech.com All rights reserved.