opengauss 5.0.0 新特性尝鲜
Posted 耀阳居士
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opengauss 5.0.0 新特性尝鲜相关的知识,希望对你有一定的参考价值。
新增特性
此处说明的是openGauss 5.0.0版本,在3.1.0版本功能的基础上,新增如下特性:
-
高性能:基础算子性能提升
扫描算子、聚集算子性能优化,实现TPC-H 100G数据量场景端到端性能提升37%.
- Parser优化:优化Parser中关键字的搜索方法;
- 表达式及算子优化:表达式框架展平及算子性能优化;
- Inner Unique优化;
- 谓词优化:通过谓词等价推理,获得新的下推谓词;
- 扫描算子优化:对索引扫描、全表扫描算子做优化;
- 聚集算子优化:对聚集算子做性能优化。
-
高安全:用户级别审计
- 支持用户级别审计:新增GUC参数full_audit_users设置被审计用户列表,对列表中的用户执行的所有SQL语句记录审计日志。可以设置对管理员操作进行全量审计,做到对管理员访问用户数据进行审计;
- 支持按客户端信息配置审计开关:新增GUC参数no_audit_client配置无需记录审计的客户端列表,对指定的客户端APP及IP不记录审计日志;
- 支持对风险较高的系统函数调用记录审计日志:对风险较高的系统函数调用记录审计日志,支持记录审计的系统函数列表需在资料中明确。
-
高可用:CM支持VIP管理(惊喜。。。)
- 通过VIP可以直接找到主机,连接重连更准更快(毫秒级别);
- 支持主机故障,CM选出新主时,VIP漂移到新的主上;
- 当出现双主时,依然可以通过VIP访问到唯一一个主机,降低了双主丢数据的风险。
-
高可用:CM支持两节点部署(惊喜。。。)
- 通过引入第三方网关IP,有效解决CM集群两节点部署模式下自仲裁问题,支持CMS和DN均为2节点的部署;
- 同时支持动态配置CM集群故障切换策略和数据库集群脑裂故障恢复策略,从而能够尽可能确保集群数据的完整性和一致性。
-
高可用:CM磁盘只读检测能力增强
- 只读状态从数据库获取,保证准确性;
- 只读仲裁只仲裁当前超过阈值的实例,其他节点不受影响;
- 主机只读保护后自动主备切换,选可用备机升主保证集群能正常提供工作。
-
高可用:CM易用性提升
- 支持一键式关闭CM集群服务;
- 支持和内核的安装部署解耦;
- 支持按事件调用用户自定义脚本;
- 支持CM组件单独升级,增强数据库集群可靠性;
- CM根据配置信息,支持用户自定义组件的监控和管理。
-
高智能:异常检测支持自配置
- 为适应用户实际场景和避免资源占用,DBMind支持系统、数据库、日志层面上的异常检测自配置,用户可以在运行前或运行过程中实时增加、暂停或删除相应的异常检测项,其中异常检测项支持复合不同的异常检测算法,异常检测会根据不同的异常检测器的结果取交集,这样为适配用户具体使用场景提供了支持。
-
企业级特性:事件触发器
- 支持捕获当前数据库下的ddl操作以及ddl操作的目标对象,并做相应处理;
- 支持捕获的DDL事件有ddl_command_start、ddl_command_end、sql_drop、table_rewrite四类。
-
企业级特性:基于存储池化、内存池化和计算池化实现openGauss资源池化架构(Beta特性)
- 存储池化支持企业高端存储、分布式存储等多种存储形态,实现一份数据服务多种计算,存储利用率提升50%以上;
- 内存池化实现计算节点间内存的互联,通过同步事务信息和数据库缓存,实现多节点下的多版本快照一致性读能力,并结合RoCE硬件RDMA加速,实现极致的跨节点低时延高吞吐通信;
- 计算池化支持多样化算力,通过shardingSphere构建openGauss分布式计算能力,实现32节点>2100W tpmC;
- 在集群管理上,基于双重心跳检测、共享盘仲裁、IO Fencing等技术实现集群节点故障自动检测、恢复和隔离,为资源池化提供一个高可靠的运行环境。
-
应用开发接口:JDBC能力增强
- 支持集群状态变化时触发快速负载均衡;
- 支持开启心跳线程定时维护主节点心跳,在主节点故障后快速kill旧连接、对新连接连到新主上
-
中间件:shardingSphere支持多种模式读写分离,支持跨库查询(惊喜。。。)
- 支持事务内语句的读写分离能力;
- 支持聚集算子计算能力,实现数据库跨分片表关联查询功能。
-
中间件:openGauss+shardingSphere 32节点组网性能>2100W tpmC(惊喜。。。)
- shardingSphere后端采用异步JDBC降低连接消耗、openGauss采用资源池化架构提高单分片能力,使用32个鲲鹏920(128核)节点组网(1*shardingsphere-proxy ,11*shardingsphere-jdbc,20*openGauss)时,完美sharding性能>2100万tpmc。
-
工具链:数据全生命周期生产工具DataKit(惊喜。。。)
- DataKit定位为openGauss的数据全生命周期生产力工具,支持数据全生命管理,覆盖openGauss部署、迁移、开发、运维等阶段;
- DataKit是openGauss的一个工具集,采用B/S软件架构,提供基础的服务器、数据库实例等软硬件资源管理能力;
- 同时支持通过按需部署功能插件扩展能力,目前社区提供安装部署、数据迁移、数据开发、智能运维等功能插件;
- DataKi也是一个工具开发平台,支持用户根据插件接口和规范实现自己的特有功能。功能插件支持动态加载到DataKit上运行,也支持从DataKit上动态卸载。插件支持调用平台和其他插件的开放接口获取相应数据和功能,以实现快速构建特色功能。
-
工具链: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;
- 支持行级、列级、表级数据校验;
- 支持对全量迁移导出的数据做直接读取校验。
-
兼容性:兼容MySQL包括数据类型、操作符、系统函数、DDL、DML、DCL、PL/SQL等在内的绝大部分常用语法,实现应用近似零修改迁移(惊喜。。。)
5.0.0版本新增对以下语法点的支持(只列举部分典型语法,详情请参见《数据迁移指南》中“MySQL兼容性说明”章节):
-
数据类型:
(1)支持XML类型; (2)支持binary数据类型及运算符; (3)支持bool类型的输出统一转为tinyint; (4)tinyint支持有符号和无符号;
-
系统函数:ADDDATE()、ADDTIME()、CONVERT_TZ()、CURDATE()、DATE_ADD() 、DATE_FORMAT()、DATE_SUB()、DATEDIFF() 、DAY()、DAYNAME()、EXTRACT()、FROM_DAYS()、FROM_UNIXTIME()、GET_FORMAT()、LAST_DAY 、LOCALTIME(), LOCALTIME、LOCALTIMESTAMP, LOCALTIMESTAMP()、MAKEDATE() 、MAKETIME()、MONTH()、MONTHNAME()、NOW() 、JSON_ARRAY()、JSON_OBJECT()、JSON_QUOTE()、JSON_CONTAINS()、JSON_CONTAINS_PATH()、JSON_EXTRACT()、JSON_UNQUOTE()、JSON_KEYS()、JSON_SEARCH()、JSON_APPEND()、JSON_ARRAY_APPEND()、JSON_ARRAY_INSERT()、JSON_INSERT()、JSON_MERGE()、JSON_MERGE_PATCH()、DATABASE()、ROW_COUNT()、ANY_VALUE()
-
DDL:
(1)支持schema级、表级、列级设置和修改默认字符集和排序规则,支持对表的字符集进行转换; (2)支持在表第一列前面或者在指定列后面添加列; (3)实现对列名称和列定义修改语法的兼容; (4)支持ALTER TABLE tablename ADD CONSTRAINT UNIQUE INDEX|KEY 语法; (5)支持create/alter/drop database在指定了字符集时统一转为create/alter/drop schema; (6)支持隐藏索引,设置索引可见性; (7)支持建表语句中不常见选项的兼容,如checksum、max_rows等; (8)支持create table select方式建表时指定字段; (9)支持字段大小写敏感; (10)支持dual表; (11)支持authid作为列名;
-
DML:
(1)支持INSERT时可以指定列的别名; (2)支持对select into语法的兼容,实现select into后面带OUTFILE、DUMPFILE和变量; (3)支持LOAD DATA语句导入表数据; (4)支持union查询关联不同类型的字段; (5)distinct支持order by带表达式; (6)外键可关联非唯一索引; (7)select支持force关键字强制走索引; (8)select语句支持用户自定义变量设置; (9)视图支持插入、删除和更新; (10)insert支持set后面的表达式右值带字段名; (11)指定多个分区查询数据; (12)支持default函数用于SQL语句;
-
DCL:
(1)支持set transaction的语法树,能设置会话级别和全局的隔离级别和可读/可写; (2)支持事件调度器,支持按时间间隔定期执行设定好的语句,支持创建、修改、删除event操作,支持show events; (3)支持Lock table/unlock table; (4)支持show status、show table status、show privileges、show warning和show errors; (5)create user支持IF NOT EXISTS选项; (6)支持 \'user\'@\'host\' 形式指定用户;
-
PL/SQL:
(1)支持WHILE循环带标签; (2)支持CASE WHEN condition控制语法; (3)支持IF_THEN控制语法; (4)支持cursor相关语法; (5)存储过程condition处理; (6)drop trigger支持不指定表名的级联删除; (7)支持DO statement语法; (8)存储过程支持REPEAT; (9)支持create procedure select语法; (10)存储过程支持RETURN; (11)支持create function前面不加as $$ begin,末尾不加end; $$ language plpgsql; (12)create trigger支持末尾不加"/"; (13)支持declare handler、continue handler、exit handler;
-
其他语法兼容:
(1)支持用户自定义变量保存select语句的结果; (2)支持utf8_general_ci、utf8_bin、utf8_unicode_ci、utf8mb4_general_ci、utf8mb4_bin、utf8mb4_unicode_ci、binary七个字符序; (3)支持utf8mb4字符集; (4)支持操作符行为和MySQL一致; (5)支持双引号表示字符串。
一openGauss概述
一、什么是openGauss
openGauss是一款开源的关系型数据库管理系统,它具有多核高性能、全链路安全性、智能运维等企业级特性。 openGauss内核早期源自开源数据库
PostgreSQL,融合了华为在数据库领域多年的内核经验,在架构、事务、存储引擎、优化器及ARM架构上进行了适配与优化。作为一个开源数据库,期
望与广泛的开发者共同构建一个多元化技术的开源数据库社区。
openGauss是一款全面友好开放,携手伙伴共同打造的企业级开源关系型数据库。openGauss提供面向多核架构的极致性能、全链路的业务、数据安全
、基于AI的调优和高效运维的能力。openGauss深度融合华为在数据库领域多年的研发经验,结合企业级场景需求,持续构建竞争力特性。openGauss
网站 (https://opengauss.org/zh/ ) 提供了有关openGauss软件的最新信息。
openGauss是一个数据库管理系统。
数据库是结构化的数据集合。它可以是任何数据,购物清单、图片库或公司网络中的大量信息。要添加、访问和处理存储在计算机数据库中的海量数据
,您需要一个数据库管理系统(DBMS)。数据库管理系统可以对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。由于计算机非常擅长
处理大量数据,因此数据库管理系统可以作为独立程序使用,也可以作为其他应用程序的一部分在计算中发挥着核心作用。
openGauss数据库是关系型的。
关系型数据库是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据。行和列被称为表,一组表组成了数据库。关系模型可以简单理解为
二维表格模型,而一个关系型数据库就是由二维表及其之间的关系组成的一个数据组织。
openGauss的SQL部分代表 “结构化查询语言”。SQL是最常用的用于访问和处理数据库的标准计算机语言。根据您的编程环境,您可以直接输入SQL、
将SQL语句嵌入到以另一种语言编写的代码中,或者使用包含SQL语法的特定语言 API。
SQL由ANSI/ISO SQL标准定义。SQL标准自1986年以来一直在发展,并且存在多个版本。本手册中,“SQL92”是指1992年发布的标准,“SQL99”是指
1999年发布的标准,“SQL2003”是指2003年发布的标准。“SQL2011”是指该标准的当前版本。openGauss支持标准的SQL92/SQL99/SQL2003/
SQL2011规范。
openGauss软件是开源的。
开源意味着任何人都可以使用和修改软件。任何人都可以下载openGauss软件并使用它,而无需支付任何费用。如果您愿意,您可以研究源代码并对其
进行更改以满足您的需要。openGauss软件使用木兰宽松许可证V2(http://license.coscl.org.cn/MulanPSL2/)来定义软件的使用范围。
二、性能特点
openGauss是关系型数据库,采用客户端/服务器,单进程多线程架构;支持单机和一主多备部署方式,同时支持备机可读、双机高可用等特性。
openGauss有如下基本功能:
1、支持标准SQL
openGauss数据库支持标准的SQL(Structured Query Language,结构化查询语言)。SQL标准是一个国际性的标准,定期会进行更新和演进。
SQL标准的定义分成核心特性以及可选特性,绝大部分的数据库都没有100%支撑SQL标准。openGauss数据库支持SQL92/SQL99/SQL2003等,同时支
持SQL2011大部分的核心特性,另外还支持部分的可选特性。
2、支持标准开发接口
openGauss数据库提供业界标准的ODBC(Open Database Connectivity,开放式数据库连接)及JDBC(Java Database Connectivity,java
数据库连接)接口,保证用户能将业务快速迁移至openGauss。目前支持标准的ODBC3.5及JDBC4.0接口,其中ODBC能够支持CentOS、openEuler、
SUSE、Win32、Win64等平台,JDBC无平台差异。
3、混合存储引擎支持
openGauss数据库支持行存储引擎、列存储引擎和内存存储引擎等。行存分为“inplace update” 和 “append update”两种模式,前者通过单独的回
滚段(undo log)来保留元组的前像以解决读写冲突,可以更自然的支持数据更新;后者将更新记录混杂在数据记录中,通过新旧版本的形式来支持数
据更新,对于旧版本需要定期做vacuum操作来支持磁盘空间的回收。列存支持数据快速分析,更适合OLAP(Online Analytical Processing,联
机分析处理)业务。内存引擎支持实时数据处理,对有极致性能要求的业务提供支撑。
4、事务支持
事务支持指的就是系统提供事务的能力,openGauss支持事务的原子性、一致性、隔离性和持久性。事务支持及数据一致性保证是绝大多数数据库的基
本功能,只有支持了事务,才能满足事务化的应用需求。
A(Atomicity):原子性。整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。
C(Consistency):一致性。事务需要保证从一个执行性状态转移到另一个一致性状态,不能违反数据库的一致性约束。
I(Isolation):隔离性。隔离事务的执行状态,使它们好像是系统在给定时间内执行的唯一操作。例如有两个事务并发执行,事务的隔离性将确保
每一事务在系统中认为只有该事务在使用系统。
D(Durability):持久性。在事务提交以后,该事务对数据库所作的更改便持久的保存在数据库之中,不会因掉电,进程异常故障而丢失。
openGauss数据库支持事务的隔离级别有读已提交和可重复读,默认隔离级别是读已提交,保证不会读到脏数据。
事务分为隐式事务和显式事务,显式事务的相关基础接口如下:
Start transaction:事务开启
Commit:事务提交
Rollback:事务回滚
另有用户还可以通过“Set transaction”命令设置事务的隔离级别、读写模式或可推迟模式。
5、软硬结合
openGauss数据库支持软硬件的结合,包括多核的并发访问控制、基于SSD(Solid-State Drive,固态硬盘)的IO(输入/输出Input/Output,)
优化、智能的Buffer Pool(缓冲池)数据管理。
6、智能的优化器
openGauss数据库提供了智能的代价模型、智能计划选择,可以显著提升数据库性能。openGauss的执行器包含了向量化执行和LLVM(Low Level
Virtual Machine,底层虚拟机,一种构架编译器的框架系统)编译执行,可以显著提升数据库性能。
7、AI的支持
传统数据库生态依赖于DBA(Database Administrator,数据库管理员)进行数据的管理、维护、监控、优化。但是在大量的数据库实例中,DBA难
以支持海量实例,而AI(Artificial Intelligence ,人工智能)则可以自动优化数据库,openGauss数据库的AI功能包括AI自调优、AI索引推
荐、AI慢SQL诊断等。
8、安全的支持
openGauss数据库具有非常好的安全特性,包括透明加密(即在磁盘的存储文件是加密的)、全密态(数据传输、存储、计算都是加密的)、防篡改(
用户不可篡改)、敏感数据智能发现等。
9、函数及存储过程支持
函数和存储过程是数据库中的一种重要对象,主要功能将用户特定功能的SQL语句集进行封装,并方便调用。存储过程是SQL、PL/SQL(Procedural
Language SQL,过程语言SQL)的组合。存储过程可以使执行商业规则的代码从应用程序中移动到数据库。从而代码存储一次能够被多个程序使用。
允许客户模块化程序设计,对SQL语句集进行封装,调用方便。
存储过程会进行编译缓存,可以提升用户执行SQL语句集的速度。
系统管理员通过对执行某一存储过程的权限进行限制,能够实现对相应数据访问权限的限制,避免了非授权用户对数据的访问,保证了数据的安全。
为了处理SQL语句,存储过程分配一段内存区域来保存上下文。游标是指向上下文区域的句柄或指针。借助游标,存储过程可以控制上下文区域的变化。
支持6种异常信息级别方便客户对存储过程进行调试。支持存储过程调试,存储过程调试是一种调试手段,可以在存储过程开发中,一步一步跟踪存储过
程执行的流程,根据变量的值,找到错误的原因或者程序的bug,提高问题定位效率。支持设置断点和单步调试。
openGauss支持SQL标准中的函数及存储过程,增强了存储过程的易用性。
10、PostgreSQL接口兼容
兼容PSQL客户端,兼容PostgreSQL标准接口。
11、支持SQL hint
支持SQL hint(hints是SQL语句的注释,可以指导优化器选择人为指定的执行计划。)影响执行计划生成、提升SQL查询性能。Plan Hint为用户提
供了直接影响执行计划生成的手段,用户可以通过指定Join顺序\\Join、Scan方法\\指定结果行数\\等多个手段来进行执行计划的调优,以提升查询的
性能。
12、Copy接口支持容错机制
openGauss数据库提供用户封装好的函数来创建Copy错误表,并允许用户在使用“Copy From”指令时指定容错选项,使得“Copy From”语句在执行过
程中部分解析、数据格式、字符集等相关的报错不会报错中断事务、而是被记录至错误表中,使得在“Copy From”的目标文件即使有少量数据错误也可
以完成入库操作。用户随后可以在错误表中对相关的错误进行定位以及进一步排查。
1、高性能
openGauss突破了多核CPU的瓶颈,提供了面向多核架构的并发控制技术,结合鲲鹏硬件优化方案,实现两路鲲鹏128核150万tpmC,内存优化表(MOT)引擎达350万tpmC
针对当前硬件多核numa的架构趋势, 在内核关键结构上采用了Numa-Aware的数据结构。
提供Sql-bypass智能快速引擎技术。
针对数据频繁更新的场景,提供ustore存储引擎。
2、数据分区
内部线程共享的关键数据结构进行数据分区,减少加锁访问冲突。比如CLOG就采用分区优化,解决ClogControlLock锁瓶颈。
3、NUMA化内核数据结构
关键数据结构NUMA化分配,减少跨CPU访问。比如全局PGPROC数组按照NUMA Node的数目分为多份,分别在对应NUMA Node上申请内存。
解决ProcArrayLock锁瓶颈。
4、绑核优化
把网络中断绑核和后台业务线程绑核区分开,避免运行线程在核间迁移造成的性能不稳定。
5、ARM指令优化
结合ARM平台的原子操作lse进行优化,实现关键互斥变量原子高效操作。
6、SQL BY PASS
通过SQL BY PASS优化SQL执行流程,简化CPU执行开销。
7、高可用
正常业务负载情况下,RTO小于10秒,降低节点故障导致的业务不可用时间。
支持主备同步、异步以及级联备机多种部署模式。
数据页CRC校验,损坏数据页通过备机自动修复。
备机并行恢复,10秒内可升主提供服务。
提供基于paxos分布式一致性协议的日志复制及选主框架。
8、并行恢复
主机日志传输到备机时,备机日志落盘的同时,发送给重做恢复分发线程,分发线程根据日志类型和日志操作的数据页发给多个并行恢复线程进行日志
重做,保证备机的重做速度跟上主机日志的产生速度。这样备机实时处于ready状态,从而实现瞬间故障切换。
9、MOT引擎(Beta发布)
内存优化表(MOT)存储引擎是一个专为多核大内存优化的存储引擎,具有极高的联机事务处理(OLTP)性能和资源利用率。MOT的数据和索引完全存储
在内存中,通过NUMA感知执行,算法消除闩锁争用以及查询JIT本地编译,提供低时延数据访问及高效事务执行。
10、高安全
openGauss支持账号管理,账号认证,口令复杂度检查,账号锁定,权限管理和校验,传输加密,操作 审计等全方位的数据库安全能力,保护业务满足
安全要求。
支持全密态计算,访问控制、加密认证、数据库审计、动态数据脱敏等安全特性,提供全方位端到端的数据安全保护。
11、易运维
openGauss将AI算法集成到数据库中,减少数据库维护的负担。
• SQL预测
openGauss根据收集的历史性能数据进行编码和基于深度学习的训练及预测,支持SQL执行时间预测。
• SQL诊断器
openGauss支持SQL执行语句的诊断器,提前发现慢查询。
• 参数自动调整
openGauss通过机器学习方法自动调整数据库参数,提高调参效率,降低正确调参成本。
基于AI的智能参数调优和索引推荐,提供AI自动参数推荐。
慢SQL诊断,多维性能自监控视图,实时掌控系统的性能表现。
提供在线自学习的SQL时间预测。
12、全开放
采用木兰宽松许可证协议,允许对代码自由修改,使用,引用。
数据库内核能力全开放。
提供丰富的伙伴认证,培训体系和高校课程。
以上是关于opengauss 5.0.0 新特性尝鲜的主要内容,如果未能解决你的问题,请参考以下文章
尝鲜Java 12新特性:switch表达式
我还在生产玩 JDK7,JDK 15 却要来了!|新特性尝鲜
我还在生产玩 JDK7,JDK 15 却要来了!|新特性尝鲜
利用Conda尝鲜Python 3.10
openGauss数据库共享存储特性简介
挑战Kafka!Redis5.0重量级特性Stream尝鲜