OpenGauss体系架构学习笔记
孟祥新 (2021-3-30)
openGauss是一款开源的关系型数据库管理系统,其内核源自PostgreSQL,深度融合了华为在数据库领域多年的经验。在去年6月30日开源后,更加被关注。在墨天轮国产数据库流行度排行中榜中位列前端。
在本月27、28日,我有幸报名参加了由云和恩墨主办的“openGauss训练营”活动。在这两天下午认真学习了由各位专家级老师所带来的高质量的技术课程。让我快速的学习了openGauss的核心架构及其主要技术。在此向恩墨学院和各位无私分享的老师致以真诚的敬意!
以下是我对田文罡老师主讲的《OpenGauss体系架构》课程学习笔记的整理。
一、OpenGauss体系架构图如下:

二、OpenGauss查询优化过程:

三、NUMA 内核数据结构:
1、线程绑核,避免线程在核间偏移。
2、NUMA化数据结构改造,减少跨核访问。
3、数据分区,减少线程访问冲突。
4、算法调整,减少单点瓶颈。
5、借助ARM原子指令,减少计算开销。
四、openGauss 大并发问题解决方案

1、连接池一般在客户端设置,连接池避免了连接的频繁创建和销毁。连接复用。
2、线程池在数据库服务器上配置,控制数据库服务器活动线程数 目。线程复用。对系统的业务起到流控作用,防止出现雪崩。
3、在高并发场景下,可以将连接池和线程池结合起来使用。
五、openGauss 线程池实现原理
1、主线程监听连接请求,分配会话,把会话分配给 一个线程组。
2、每个线程池组有一个监听线程负责监听epoll列 表中所有的客户连接,避免“惊群”效应。
3、每个线程组可以和一个NUMA 节点绑定。
六、数据库事务机制:
1、事务的持久性(Durability)主要通过预写式日志WAL算法实现。在事务提交时,采用预写式日志方式, 把REDO日志写到磁盘。
2、检查点:将脏缓冲队列上的全部 数据写出到数据文件。
七、增量检查点技术原理
1.每一个脏数据库块都会被记录到脏页队列,按照第一次对此数据块修改时日志的LSN顺序来排列,如果一个数据块进行多 次修改,该数据块在脏页队列中的顺序并不会发生变化。
2.在执行增量检查点时,把一定LSN之前的脏页刷盘,不需要把所有dirty buffer 全部写到磁盘。
八、openGauss 数据库 OLTP&OLAP业务特征

九、openGauss 行列混合引擎
十、MOT原理:
优势1:性能高、CPU利用率高、延迟低
①高度优化的全内存免锁存储引擎
②基于全内存优化实现的免锁索引
③高度优化的并发访问控制
④针对NUMA优化的内存管理,预缓存对象池
⑤针对NUMA高度优化的组提交
优势2:生态好、兼容好,功能完整
①有效利用openGauss现有的查询引擎, 兼容PG生态
②兼容PG原生FDW和索引,SQL标准兼容 度高,功能完整
③除PG原生FDW之外,还支持存储过程、 用户定义函数等功能
十一、数据库双机原理:

十二、数据库极致RTO
1.备机日志实时落盘,同时将日志流并行解码、读取和回放事务日志
2.保证极大化日志回放吞吐,功能切分服务化、流水线协同,减少串行度。
3.批处理化回放,消除单条回放反复获取/释放锁的并发控制和IO开销。
4.页级物理并行,去除按表切割并行机制,locality更好、并行度更高。
十三、全密态等值查询

十四、全密态等值查询流程
1、三层秘钥管理机制:根秘钥,主 秘钥和列加密秘钥。
2、客户端完成数据的加密和解密, 服务器完成密态数据计算。
3、不需要加密的字段仍然是明文处理。
十五、openGauss AI 全景

体系架构 课后作业:
openGauss 体系架构特点及适应场景:
openGauss 体系架构特点:
1、高性能:通过多核数据结构,增量检查点,大内存缓冲区管理实现百万级tpmC。服务端连接池,支持万级并发。
2、高可用:支持主备同步,异步多种部署模式;备机并行恢复,10秒内可升主提供服务。
3、数据分区:内部线程共享的关键数据结构进行数据分区,减少加锁访问冲突。
4、NUMA化内核数据结构:关键数据结构NUMA化分配,减少跨CPU访问。
5、绑核优化:把网络中断绑核和后台业务线程绑核区分开,避免运行线程在核间迁移造成的性能不稳定。
6、ARM指令优化:结合ARM平台的原子操作lse进行优化,实现关键互斥变量原子高效操作。
7、SQL BY PASS:通过SQL BY PASS优化SQL执行流程,简化CPU执行开销。
8、高可靠:正常业务负载情况下,RTO小于10秒,降低节点故障导致的业务不可用时间。
9、并行恢复:主机日志传输到备机时,备机日志落盘的同时,发送给重做恢复分发线程,分发线程根据日志类型和日志操作的数据页发给多个并行恢复线程进行日志重做,保证备机的重做速度跟上主机日志的产生速度。这样备机实时处于ready状态,从而实现瞬间故障切换。
10、MOT引擎:内存优化表(MOT)存储引擎是一个专为多核大内存优化的存储引擎,具有极高的联机事务处理(OLTP)性能和资源利用率。MOT的数据和索引完全存储在内存中,通过NUMA感知执行,算法消除闩锁争用以及查询JIT本地编译,提供低时延数据访问及高效事务执行。更多请参考MOT引擎文档。
11、安全:openGauss支持账号管理,账号认证,口令复杂度检查,账号锁定,权限管理和校验,传输加密,操作 审计等全方位的数据库安全能力,保护业务满足安全要求。
12、易运维:openGauss将AI算法集成到数据库中,减少数据库维护的负担。
13、SQL预测:openGauss根据收集的历史性能数据进行编码和基于深度学习的训练及预测,支持SQL执行时间预测。
14、SQL诊断器:openGauss支持SQL执行语句的诊断器,提前发现慢查询。
15、参数自动调整:openGauss通过机器学习方法自动调整数据库参数,提高调参效率,降低正确调参成本。
适用场景:
1、行存储,适用于业务数据频繁更新的场景。
2、列存储,适用于业务数据追加和分析的场景。
3、内存表,适用于高吞吐,低时延,极高性能场景。
3、内存表,适用于高吞吐,低时延,极高性能场景。




