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

openGauss体系架构学习心得

原创 杜京 2021-03-30
795

经过8小时的学习收获颇丰,因为有多年Oralce DBA的工作经验,拿来任何数据库都想跟Oracle做对比。

通过学习知道了华为人的努力和付出,给我国产数据库又添砖加瓦。

田老师讲解openGauss体系架构分为三个章节

openGauss体系架构,主要引擎,主要原理

openGauss VS PG架构和关键技术对比

关键差异因素:

运行时模型,事务处理机制,数据存储和组织,查询优化器。

线程池模型,高并发连接切换代价小、内存损耗小,执行效率高,一万并发连接比最优性能损耗<5%

64位事务ID,使用CSN解决动态快照膨胀问题;NUMA-Aware引擎优化改造解决“五把大锁”

增量Checkpoint机制,实现性能波动<5%

NUMA改造、cache-line padding、原生spin-lock

行存、列存、内存引擎,在研DFV存储和原位更新

支持SQL Bypass, CBO吸收工行等企业场景优化能

ANSI/ISO标准SQL92、SQL99和SQL2003和企业扩展包

openGauss逻辑模块:

客户端驱动,线程管理,通信管理,SQL引擎,存储引擎,安全管理,通用组件和工具。

openGauss查询优化:

统计信息,行数估算,代价估算,路径搜索,计划生成。

openGauss执行引擎:

扫描算子,控制算子,物化算子,连接算子

openGauss NUMA内核数据结构

1、线程绑核,避免线程在核间偏移。

2、NUMA化数据结构改造,减少跨核访问。

3、数据分区,减少线程访问冲突。

4、算法调整,减少单点瓶颈。

5、借助ARM原子指令,减少计算开销。

openGauss 大并发问题解决方案

1、连接池一般在客户端设置,连接池避免了连接的频繁创建和销毁。连接复用。

2、线程池在数据库服务器上配置,控制数据库服务器活动线程数目。线程复用。对系统的业务起到流控作用,防止出现雪崩。

3、在高并发场景下,可以将连接池和线程池结合起来使用。

openGauss 线程池实现原理

1、主线程监听连接请求,分配会话,把会话分配给一个线程组。

2、每个线程池组有一个监听线程负责监听epoll列表中所有的客户连接,避免“惊群”效应。

3、每个线程组可以和一个NUMA 节点绑定。

openGauss 数据库事务机制

1、事务的持久性(Durability)主要通过预写式日志WAL算法实现。在事务提交时,采用预写式日志方式,把REDO日志写到磁盘。

2、检查点:将脏缓冲队列上的全部数据写出到数据文件。





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

评论