暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

openGauss体系架构课程笔记

原创 仝海生 2021-03-28
2021

一、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内核数据结构

线程绑核,避免线程在核间偏移

减少跨核访问

对数据分区,减少线程访问冲突

算法调整,减少单点瓶颈

借助ARM指令,减少计算开销

(2)大并发问题解决方案

连接池是在客户端配置。应用通过连接池于服务器间进行连接,连接复用,避免连接的频繁创建核销毁。

线程池在数据库服务器上配置,控制数据库活动线程数量,线程复用,对系统业务起到流量控制作用。

在高并发场景下,可以将连接池与线程池结合使用

(3)线程池实现原理

主线程有线程会话控制监听,用来分配会话,把会话分配给线程池组

每个线程池组有一个监听用来监听客户连接,并分配给具体线程

每个线程池组可以和NUMA节点绑定

(4)数据库事务机制

在事务提交时,通过预写日志方式实现事务持久性

检查点:将脏缓存队列上的全部数据写到数据文件

(5)增量检查点技术原理

每个脏数据块都会记录到脏页队列

在执行增量检查点时,把一定LSN(Log Sequence Number)前的脏页刷盘,不需要把所有dirty buffer写到磁盘

(6)行列混合引擎

表的存储结构可以指定行存/列存,根据不同的应用场景选择不同的存储类型:

 

点查询场景:

(优选)使用行存:B+树索引,直接定位到行(页)

使用列存:粗粒度索引,定位到CU(Compression Unit,压缩单元)

数据更新场景:

(优选)使用行存:支持行级锁

        使用列存:支持CU级别锁

统计分析场景:

        使用行存:通过Pipeline执行

(优选)使用列存:向量化查询引擎,执行效率高

批量加载场景:

        使用行存:并行批量加载

(优选)使用列存:压缩率高,io量小

 

(7)MOT原理

免锁,高吞吐,低时延

优势一:性能高、CPU利用率高、延迟低

优势二:兼容性好、功能完整

 

(8)数据库双机原理

 

(9)数据库极致RTO

备机日志实时落盘,并行解码、读取和回放

功能切分服务化、流水线协同

批处理化回放,消除反复获取/释放锁的并发控制和io开销

页级物理并行

 

(10)全密态等值查询

数据以密文形式存储,基于可信通道传输。提供与密文环境隔离的明文环境,提供SQL查询和计算能力

三层密钥管理机制:根密钥、主密钥和列加密密钥

在客户端完成数据的加密和解密,服务器完成密态数据计算

不需要加密的字段仍是明文处理

(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主要有复合应用场景、高性能和高可用等产品特点。

复合应用场景

行存储,支持业务数据频繁更新场景。

列存储,支持业务数据追加和分析场景。

内存表,支持高吞吐,低时延,极高性能场景。

 

高性能

通过多核数据结构,增量检查点,大内存缓冲区管理实现百万级tpmC。

服务端连接池,支持万级并发。

 

高可用

支持主备同步,异步多种部署模式。

数据页CRC校验,损坏数据页通过备机自动修复。

备机并行恢复,10秒内可升主提供服务。

 

AI能力

具备AI4DB能力,包括参数智能调优与诊断、慢SQL发现、索引推荐、时序预测、异常检测等。

具备DB4AI能力,兼容MADlib生态,支持70+算法,性能比原生MADlib有数倍提升,支持XGBoost、GBDT等高级算法。

 

 

 

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论