openGauss 5.0.0 版本现已正式发布。这是openGauss发布的第三个LTS版本,版本生命周期为3年。公告称,openGauss 5.0.0版本与之前的版本功能特性保持兼容,在内核能力、工具链、兼容性方面全面增强。
具体更新内容包括:
一、内核能力增强
1 企业级特性
SQL PATCH
当业务语句出现由于数据等因素变化引起执行计划跳变,且出现严重的性能劣化,用户可通过SQL PATCH机制在线实施修复,业务无需版本升级,无感知解决计划跳变等疑难问题。
SQL Patch功能通过在优化器阶段计划生成之前对查询解析树的HintState成员进行替换,达成在计划生成阶段产生最佳执行计划的效果。在接口层面,用户可以使用SQL PATCH的创建、激活、禁用、删除、显示等接口,实现SQL PATCH全生命周期管理。
分区表能力持续增强
-
List分区键最大数由1扩展为16列;
-
Range分区键最大数由4扩展为16列;
-
分区键底层重构LRHS为统一分区键内存结构
-
兼容创建分区表COLUMNS、VALUES IN、PARTITIONS num、SUBPARTITIONS num、MAXVALUE、KEY语法
-
优化跨分区的DDL和DML并发查询的算法,提升并发查询的性能
内置gstack工具
客户场景中gdb、gstack等工具都是无法使用的,当系统出现hang、慢等问题时,无法通过调用栈进行进一步的定位,针对以上痛点,通过复用openGauss操作系统信号,在信号处理函数中获取调用栈的方式实现内置gs_stack()函数,方便用户打印线程定位疑难问题。
事件触发器
客户场景中常常存在某个表结构发生变化时,希望在另一个或几个表上执行一些相关操作的需求。而通过事件触发器可以捕获当前数据库下的ddl操作以及ddl操作的目标对象,当目标对象发生执行指定操作的事件后,触发用户自定义的存储过程,处理业务期望的后续任务。目前已支持捕获的DDL事件包括:ddl_command_start、ddl_command_end、sql_drop、table_rewrite四类。
2 高性能
基础算子性能提升
扫描算子、聚集算子性能优化,实现TPC-H 100G数据量场景端到端性能提升37%.
-
Parser优化:优化Parser中关键字的搜索方法;
-
表达式及算子优化:表达式框架展平及算子性能优化;
-
Inner Unique优化;
-
谓词优化:通过谓词等价推理,获得新的下推谓词;
-
扫描算子优化:对索引扫描、全表扫描算子做优化;
-
聚集算子优化:对聚集算子做性能优化。
3 高可用
CM支持VIP管理
-
支持业务配置VIP连接数据库,当主机故障,发生主备切换时,业务连接可自动重连到新的主机(毫秒级别);
-
当数据库出现双主时,通过VIP连接数据库可确保连接唯一的主机,降低双主丢数据的风险。
CM支持两节点部署
-
通过引入第三方网关IP,有效解决CM集群两节点部署模式下自仲裁问题,支持CMS和DN;
-
同时支持动态配置CM集群故障切换策略和数据库集群脑裂故障恢复策略,从而能够尽可能确保集群数据的完整性和一致性。
CM磁盘只读检测能力增强
-
只读状态从数据库获取,保证准确性;
-
只读仲裁只仲裁当前超过阈值的实例,其他节点不受影响;
-
主机只读保护后自动主备切换,选可用备机升主保证集群能正常提供工作。
CM易用性提升
-
支持一键式关闭CM集群服务;
-
支持和内核的安装部署解耦;
-
支持按事件调用用户自定义脚本;
-
支持CM组件单独升级,增强数据库集群可靠性;
-
CM根据配置信息,支持用户自定义组件的监控和管理。
4 高智能
DBMind自治运维系统持续增强
异常检测支持自配置
为适应用户实际场景和避免资源占用,DBMind支持系统、数据库上的异常检测自配置,用户可以在运行前或运行过程中实时增加、暂停或删除相应的异常检测项,其中异常检测项支持复合不同的异常检测算法,异常检测会根据不同的异常检测器的结果取交集,这样为适配用户具体使用场景提供了支持。
5 高安全
支持用户级别审计设置
-
支持用户级别审计日志,对指定用户的所有SQL语句记录审计日志;
-
支持按客户端信息配置审计开关,对指定的客户端APP及IP不记录审计日志;
-
支持对风险较高的系统函数调用记录审计日志
6 资源池化
计算池化
计算池化支持多样化算力,通过shardingSphere构建openGauss分布式计算能力,实现32节点>2100W tpmC。
存储池化
存储池化支持多节点共享存储和池化能力,支持高端企业存储。基于分布式存储服务DSS组件,实现多节点共享一份数据,存储效率提升50%。
内存池化
基于分布式内存服务DMS组件实现多节点内存池化功能,通过高速互联网络交换页面实现多节点数据实时一致,并结合RoCE硬件RDMA加速,实现极致的低时延高吞吐通信。
集群管理
基于双重心跳检测、共享盘仲裁、IO Fencing等技术实现集群节点故障自动检测、恢复和隔离,为资源池化提供一个高可靠的运行环境。
二、DataKit工具链增强
DataKit定位为openGauss的数据全生命周期生产力工具,支持数据全生命管理,覆盖openGauss部署、迁移、开发、运维等阶段;
-
DataKit是openGauss的一个工具集,采用B/S软件架构,提供基础的服务器、数据库实例等软硬件资源管理能力;
-
同时支持通过按需部署功能插件扩展能力,目前社区提供安装部署、数据迁移、数据开发、智能运维等功能插件;
-
DataKit也是一个工具开发平台,支持用户根据插件接口和规范实现自己的特有功能。功能插件支持动态加载到DataKit上运行,也支持从DataKit上动态卸载。插件支持调用平台和其他插件的开放接口获取相应数据和功能,以实现快速构建特色功能。
1 资源中心
资源管理作为DataKit的基座,为插件提供最基础的资源信息,让插件基于资源进行上层的业务开发和更为复杂的功能实现。当前支持的资源:
-
数据库实例(包括openGauss和实例)
-
物理机资源及可用区管理。
2 迁移能力
MySQL一站式迁移工具gs_rep_portal
-
gs_rep_portal支持对接debezium+kafka和gs_mysync,集成全量迁移、增量迁移、数据校验能力,实现全量迁移、增量迁移、反向迁移、数据校验完整方案打通;
-
支持并行迁移任务流创建,支持用户设定自定义迁移计划,任务根据用户设定的执行计划顺序的自动执行迁移的每个步骤;
-
支持迁移进度展示(总量、剩余量、剩余时间、复制时延等),支持迁移失败语句的展示。
MySQL全量迁移工具gs_mysync
-
全量迁移工具gs_mysync(原chameleon),新增进度展示功能、可调试增强,全量迁移性能大于300M/s,即1T/h。
MySQL增量迁移和反向迁移工具gs_replicate
-
增量迁移和反向迁移收编到Dezebium+kafka,对外统一到gs_replicate工具中,增量迁移性能大于3W tps。
基于默克尔树的数据校验工具gs_datacheck
-
数据校验性能达到70MB/s;
-
支持行级、列级、表级数据校验;
-
支持对全量迁移导出的数据做直接读取校验。
3 业务建模
支持可视化算子操作和编辑,sql语句的预览和运行,数据可视化和生成报表,它作为DataKit的可插拔插件开发。主要功能:
-
提供拖拽、连线的操作方式完成数据流算子的组装、配置。
-
支持读取单步算子执行结果为用户生成自定义图表,并可以记录快照。
-
可将一个或多个图表快照通过自由排布的方式构建报表,并可通过外链分享给游客用户。
4 智能运维
支持慢sql诊断,日志检索,多维度运维指标监控。它作为DataKit的可插拔插件开发。主要功能:
-
实例监控插件:支持监控 openGauss 数据库以及数据库所在服务器,本特性主要关注数据库和操作系统监控指标和 TOPSQL 捕获和分析。与其他需求及特性的交互分析:支持关联 SQL 诊断功能,进入 TOPSQL 详情页面,用户可触发创建诊断任务,对 TOPSQL 进行诊断分析。
-
日志检索插件:为openGauss用户提供OS日志、数据库日志统一检索入口。
-
SQL诊断插件:为openGauss用户提供慢SQL监控、问题SQL诊断分析的功能。
5 安装部署
使用DataKit的安装功能可以让用户能够快速上手体验openGauss企业级数据库功能,包括在企业环境中安装、部署、卸载、各类openGauss集群,减少了用户的学习成本和运维成本,实现了对openGauss各种常见操作的可视化,屏蔽了不同openGauss版本中的配置差异。它作为DataKit的可插拔插件开发,主要功能:
-
实现不同版本的openGauss安装、不同版本的升级;实现简单快捷的数据库日常运维。
-
实现在页面上查看openGauss数据库基本状态、实时数据推送等。
6 数据开发
业务开发 (Web Data Studio) 是一个基于B通用集成开发环境,它以插件形式安装部署于DataKit,简化了openGauss 数据库的开发和管理工作。
7 调试能力
它允许数据库开发&DBA在DataKit上实现存储过程(函数)的开发与调试,它作为DataKit的可插拔插件开发,主要功能:
-
创建和管理数据库的存储过程。
-
在线可视化调试存储过程。
三、兼容能力增强
兼容能力增强兼容MySQL包括数据类型、操作符、系统函数、DDL、DML、DCL、PL/SQL等在内的绝大部分常用语法,实现应用近似零修改迁移
5.0.0版本新增对以下语法点的支持(只列举部分典型语法,详情请参见《数据迁移指南》中“MySQL兼容性说明”章节):
-
数据类型:(1)支持XML类型;(2)支持binary数据类型及运算符;(3)支持tinyint
-
系统函数:ADDDATE、ADDTIME、CONVERT_TZ、CURDATE、DATE_ADD、DATE_FORMAT、JSON_ARRAY、JSON_OBJECT、JSON_QUOTE、JSON_EXTRACT、DATABASE、ROW_COUNT、ANY_VALUE等;
-
DDL:(1)支持schema级、表级、列级设置和修改默认字符集和排序规则,支持对表的字符集进行转换;(2)支持在表第一列前面或者在指定列后面添加列;(3)支持隐藏索引,设置索引可见性;(4)支持字段大小写敏感;
-
DML:(1)支持对select into后面带OUTFILE、DUMPFILE和变量;(2)支持LOAD DATA语句导入表数据;(3)distinct支持order by带表达式;(4)select支持force关键字强制走索引;(5)视图支持插入、删除和更新;(6)支持default函数用于SQL语句;
-
DCL:(1)支持set transaction语法,设置会话和全局的隔离级别;(2)支持事件调度器,支持创建、修改、删除event操作;(3)支持show status、show warning和show errors等;(4)支持 'user'@'host' 形式指定用户;
-
PL/SQL:(1)支持WHILE循环带标签;(2)支持CASE WHEN condition和IF_THEN控制语法;(3)支持cursor相关语法;(4)存储过程支持REPEAT和RETURN; (5)支持create function前面不加as begin,末尾不加end language plpgsql;(6)支持declare handler、continue handler、exit handler;
-
其他语法兼容:(1)支持用户自定义变量保存select语句的结果;(2)支持utf8_general_ci、utf8_bin、utf8_unicode_ci、binary等字符序;(3)支持utf8mb4字符集;(4)支持操作符行为和MySQL一致;(5)支持双引号表示字符串。
四、其他企业级特性增强
1 中间件
shardingSphere支持多种模式读写分离,支持跨库查询
-
支持事务内语句的读写分离能力;
-
支持聚集算子计算能力,实现数据库跨分片表关联查询功能。
openGauss+shardingSphere 32节点组网性能>2100W tpmC
-
shardingSphere后端采用异步JDBC降低连接消耗、openGauss采用资源池化架构提高单分片能力,使用32个鲲鹏920(128核)节点组网(1*shardingsphere-proxy ,11*shardingsphere-jdbc,20*openGauss)时,完美sharding性能>2100万tpmc。
2 应用开发接口
JDBC能力增强
-
支持集群状态变化时触发快速负载均衡;
-
支持开启心跳线程定时维护主节点心跳,在主节点故障后快速kill旧连接、对新连接连到新主上
五、文档结构优化
为了方便用户更好地使用openGauss,按用户角色、使用场景优化了文档结构,增加快速入门、应用开发指南、数据库管理指南、数据库运维指南、性能调优指南、AI特性指南、插件参考、SQL参考和数据库参考,用户可以根据使用场景快速获取openGauss信息。
快速体验:https://docs.opengauss.org/zh/docs/5.0.0/docs/GettingStarted/GettingStarted.html
更多详情可查看发行说明。