openGauss
开源数据库
openGauss社区官网
开源社区
openGauss 5.0.0版本正式发布!
今日,openGauss 5.0.0 版本正式上线!
openGauss 5.0.0 是 openGauss 发布的第三个 LTS 版本,版本生命周期为 3 年。
openGauss 5.0.0 版本与之前的版本功能特性保持兼容,在内核能力、工具链、兼容性方面都持续增强。
发行说明请参考官网: https://docs-opengauss.osinfra.cn/zh/docs/5.0.0/docs/ReleaseNotes/Releasenotes.html
立即体验 openGauss 5.0.0 版本! https://opengauss.org/zh/download/
一、内核能力增强
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 中关键字的搜索方法,典型场景性能提升 5%;
- 表达式及算子优化:表达式框架展平及算子性能优化,典型场景性能提升 10%;
- Inner Unique 优化,典型场景性能提升 8%;
- 谓词优化:通过谓词等价推理,获得新的下推谓词,典型场景性能提升 20%;
- 扫描算子优化:对索引扫描、全表扫描算子做优化,典型场景性能提升 5%;
- 聚集算子优化:对聚集算子做性能优化,典型场景性能提升 30%。
3.高可用
CM 支持 VIP 管理
- 支持业务配置 VIP 连接数据库,当主机故障,发生主备切换时,业务连接可自动重连到新的主机(毫秒级别);
- 当数据库出现双主时,通过 VIP 连接数据库可确保连接唯一的主机,降低双主丢数据的风险。
CM 支持两节点部署
- 通过引入第三方网关 IP,有效解决 CM 集群两节点部署模式下自仲裁问题,支持 CMS 和 DN 按一主一备两节点部署;
- 同时支持动态配置 CM 集群故障切换策略和数据库集群脑裂故障恢复策略,从而能够尽可能确保集群数据的完整性和一致性。
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 和 MySQL 实例)
- 物理机资源及可用区管理。
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/S 架构的通用集成开发环境,它以插件形式安装部署于 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 信息。
开放治理,共建、共享、共治最具创新力的数据库开源社区
作为一个开源社区,openGauss 秉承共建、共享、共治的理念。通过开放、成熟的治理,与企业、伙伴、开发者,共同建设开源社区。截至目前,openGauss 社区用户超过 160 万,230 多家企业签署企业贡献者协议 CLA 加入到社区,来自企业和高校的 4400 名开发者积极参与 openGauss 社区贡献,联合伙伴累计完成 500+个行业解决方案适配,覆盖政府、金融、运营商等 10 余个行业。
感谢 openGauss 社区所有贡献者
“孤举者难起,众行者易趋”。我们衷心感谢来自社区 550 名参与 openGauss 5.0.0 版本开发的开发者们。
感谢参与和协助 openGauss 项目的所有成员,包括华为、清华大学、云和恩墨、海量数据、中国联通、中国移动、南大通用、粤港澳大湾区国家技术创新中心、软通动力、中软国际、北京超图软件股份有限公司、民生银行、神舟通用、易宝软件、北京思斐软件技术有限公司、超聚变数字技术有限公司、浩联云(广东)科技有限公司、西安智讯数据网络有限公司、西安电子科技大学、天津大学、电子科技大学计算机科学与工程学院、宁夏大学信息工程学院、华南理工大学软件学院、中山大学计算机学院、中央民族大学信息工程学院、西安利他网络有限公司、深信服科技股份有限公司等组织单位(排名不分先后)。是你们的辛勤付出使得版本顺利发布,也为 openGauss 更好地发展提供可能。