一、openGauss体系架构(田文罡)课程笔记
1.openGauss体系架构
(1)openGauss的运行时模型是采用线程池模型,在高并发场景下连接间切换代价小,效率高。这点与传统PG服务器使用的每个并发连接对应一个独立进程的进程模型不同。所以在多核支持和扩展方面openGauss有其优势。
(2)事务处理方面上,openGauss通过对NUMA引擎的优化,一定程度上解决了“五把大锁”的问题。同时,采用增量CheckPoint机制,能够降低CheckPoint对性能的影响。
注:“五把大锁”是指openGauss中的“Clog、WALInsert、WALWrite、ProcArray、XidGen”这五种锁,这些锁是用来保护数据库服务器内核的数据控制结构,在一定程度上是性能问题的瓶颈。通过对NUMA架构的深度优化和运用,优化了openGauss内部多核间并发问题。
(3)在数据存储方面,支持:行存储、列式存储、MOT等
(4)SQL引擎中引入AI引擎
2.openGauss 主要引擎
(1)SQL引擎
SQL解析过程为:词法分析、语法分析、语义分析、查询优化这几个步骤
查询优化的处理过程:
统计信息:优化的依据,来源于对表中数据信息的统计
行数估算:基于表统计信息,估算结果集大小,作为代价估算的基础
代价估算:根据关系相关数据量,估算各算子的执行代价。各算子代价之和为计划的总代价
路径搜索:根据各算子的执行代价,通过求解路径最优算法(比如动态规划等)
计划生成:将执行路径转换成执行计划树,并输出给执行器进行查询执行处理
(2)执行引擎
执行引擎是围绕着关系运算来实现控制。
算子分为:
扫描算子(比如表扫描、索引扫描):用来从数据源抽取数据,一般是执行计划树的叶子节点
控制算子(比如limit、union):用来控制数据流程
物化算子:部分处理逻辑需要把下层数据全部去除后才能完成(比如SORT),所以需要将计算中间过程实体化,生成中间临时表。需要扫描所有数据之后才能返回
连接算子(join等)
(3)存储引擎
3.openGauss主要技术原理
(1)NUMA内核数据结构
l 线程绑核,避免线程在核间偏移
l 减少跨核访问
l 对数据分区,减少线程访问冲突
l 算法调整,减少单点瓶颈
l 借助ARM指令,减少计算开销
(2)大并发问题解决方案
l 连接池是在客户端配置。应用通过连接池于服务器间进行连接,连接复用,避免连接的频繁创建核销毁。
l 线程池在数据库服务器上配置,控制数据库活动线程数量,线程复用,对系统业务起到流量控制作用。
l 在高并发场景下,可以将连接池与线程池结合使用
(3)线程池实现原理
l 主线程有线程会话控制监听,用来分配会话,把会话分配给线程池组
l 每个线程池组有一个监听用来监听客户连接,并分配给具体线程
l 每个线程池组可以和NUMA节点绑定
(4)数据库事务机制
l 在事务提交时,通过预写日志方式实现事务持久性
l 检查点:将脏缓存队列上的全部数据写到数据文件
(5)增量检查点技术原理
l 每个脏数据块都会记录到脏页队列
l 在执行增量检查点时,把一定LSN(Log Sequence Number)前的脏页刷盘,不需要把所有dirty buffer写到磁盘
(6)行列混合引擎
表的存储结构可以指定行存/列存,根据不同的应用场景选择不同的存储类型:
点查询场景:
(优选)使用行存:B+树索引,直接定位到行(页)
使用列存:粗粒度索引,定位到CU(Compression Unit,压缩单元)
数据更新场景:
(优选)使用行存:支持行级锁
使用列存:支持CU级别锁
统计分析场景:
使用行存:通过Pipeline执行
(优选)使用列存:向量化查询引擎,执行效率高
批量加载场景:
使用行存:并行批量加载
(优选)使用列存:压缩率高,io量小
(7)MOT原理
免锁,高吞吐,低时延
优势一:性能高、CPU利用率高、延迟低
优势二:兼容性好、功能完整
(8)数据库双机原理
(9)数据库极致RTO
备机日志实时落盘,并行解码、读取和回放
功能切分服务化、流水线协同
批处理化回放,消除反复获取/释放锁的并发控制和io开销
页级物理并行
(10)全密态等值查询
数据以密文形式存储,基于可信通道传输。提供与密文环境隔离的明文环境,提供SQL查询和计算能力
l 三层密钥管理机制:根密钥、主密钥和列加密密钥
l 在客户端完成数据的加密和解密,服务器完成密态数据计算
l 不需要加密的字段仍是明文处理
(11)AI全景
AI4DB
AI IN DBMS
AI IN Kernel
DB4AI
AI IN SQL
全应用场景(SQL/DBMS/Kernel)、全用户(User/DBA/Dev)、全技术栈(AI框架/AI算法/机器学习/深度学习)、异构计算(鲲鹏/X86/GPU)
-------------------------------------------------------------------------------
二、openGauss体系架构特点及适应场景
openGauss是基于PostgresSQL进行深度定制和优化的一款关系型数据库,采用单进程多线程架构,支持单机和一主多备部署方式。通过服务器的高并发,实现对数据处理的快速响应。同时通过日志复制可以把数据复制到备机,提供数据的高可靠和读扩展。
openGauss主要有复合应用场景、高性能和高可用等产品特点。
l 复合应用场景
行存储,支持业务数据频繁更新场景。
列存储,支持业务数据追加和分析场景。
内存表,支持高吞吐,低时延,极高性能场景。
l 高性能
通过多核数据结构,增量检查点,大内存缓冲区管理实现百万级tpmC。
服务端连接池,支持万级并发。
l 高可用
支持主备同步,异步多种部署模式。
数据页CRC校验,损坏数据页通过备机自动修复。
备机并行恢复,10秒内可升主提供服务。
l AI能力
具备AI4DB能力,包括参数智能调优与诊断、慢SQL发现、索引推荐、时序预测、异常检测等。
具备DB4AI能力,兼容MADlib生态,支持70+算法,性能比原生MADlib有数倍提升,支持XGBoost、GBDT等高级算法。




