起源
Postgres-XC是基于 PostgreSQL实现的可扩展集群,该集群基于shared-nothing架构形成多主且写可靠的数据库集群系统,PostgreSQL相关的API可以不需要修改直接使用,应用程序、事务处理等均不需要修改。基于Postgres-XC项目,深度融合华为在数据库领域多年的经验,结合企业级的场景需求,持续构建竞争力特性,形成了openGauss数据库。
shared-nothing架构特点:
-
高并发大数据场景下的按需拓展
-
内部自动化并行处理
-
最优化IO处理
-
增加节点实现线性拓展
openGauss使用场景
-
交易型应用:大并发、大数据量、以联机事务处理为主的交易型应用,如电商、金融、电信CRM/计费等,应用可按需选择不同的主备部署模式。
-
物联网数据:在工业监控和远程控制、智慧城市的延展、智能家居、车联网等物联网场景下,传感监控设备多,采样率高,数据存储为追加模型,操作和分析并重的场景。
openGauss竞争力总览
特点 | 描述 |
---|---|
高性能 | 通过列存储、向量化执行引擎、融合引擎等关键技术,实现百亿数据量查询秒级响应。 |
高安全 | 支持访问控制、加密认证、数据库审计、动态数据脱敏等安全特性,提供全方位端到端的数据安全保护。 |
易运维 | 支持WDR诊断、慢SQL诊断、Session诊断等多种维护手段,准确快速定位问题。具备AI4DB能力,能够通过AI算法实现数据库自调优、自监控、自诊断等。 |
全开放 | 采用木兰宽松许可证协议,允许对代码自由修改、使用、引用。 |
高可靠 | 采用闪回和回收站技术,确保可快速恢复误删除数据。 |
openGaus VS PostgreSQL 关键技术对比
关键差异化因素 | openGauss | PostgreSQL |
---|---|---|
执行模型 | 线程池模型,高并发连接切换代价小、内存损耗小,执行效率更好 | 进程模型,数据库进程通过内存共享实现通信与 |
并发控制 | 64位事务ID,使用CSN解决动态快照膨胀问题;NUMA-Aware引擎优化解决“五把大锁” | 事务ID回卷,长期运行性能因为ID回收周期大幅波动;存在“五把锁”的问题,导致事务执行效率和多处理器多核扩展性存在瓶颈 |
日志和检查点 | 增量checkpoint机制,实现性能波动 < 5 % | 全量checkpoint机制,性能短期波动 > 15 % |
鲲鹏NUMA | NUMA改造,cache-line padding、原生spin-lock | NUMA多核能力弱,单机两路性能TMPC < 60w |
多引擎 | 行存、列存、内存引擎,在研DFV存储和原位更新 | 仅支持行存 |
优化器 | 支持CBO,吸收大型企业场景优化问题 | 支持CBO,复杂场景优化能力一般 |
SQL解析 | ANSI/ISO标准SQL92、SQL99、SQL2003和企业拓展包 | ANSI/ISO标准SQL92、SQL99、SQL2003 |
openGauss处理流程 VS Mysql处理流程
对于openGauss,它的主要处理流程为四步:
-
启动流程
-
业务处理流程
-
检查点流程
-
归档流程
openGauss处理流程图
对于Mysql,它的主要处理流程为三步:
- 连接管理
- 解析与优化
- 存储引擎
openGauss的关键技术
- 全局数据结构NUMA化改造
- 工作进程NUMA绑核、全局数据结构(ProcArray/Buffer/B-Tree等)NUMA分区化改造,减少跨核、跨处理器竞争冲突。
- WAL和Clog等日志从串行改为多核并行,消除串行的性能瓶颈。
-
多核原生指令集优化
- 鲲鹏原生Atomic_LES实现了NUMA-Aware自旋锁,四个指令->一个指令,提升指令效率。
- cache-line padding技术,将WAL等组件保护全局位置索引的两个cache-line原子操作->一个,提升指令和数据效率。
-
实时日志同步、日志流水线和无锁并行日志恢复
传统并行日志的实现方案主要有两种:
-
方案一:延迟回放
- 常态下:日志不落盘即回放,实现备机实时回放。
- 恢复中:为缩短故障切换时间,日志采用lazy回放模式,延迟到备升主,后台并行。
- 问题:需要维护多版本,消耗存储和CPU资源。
-
方案二:逻辑并行
- 同一个prepare-commit日志可以并行回放。
- 采用LOGIC_CLOCK减少备机日志同步、并行复制。
- 问题:并行度不高,不在一个prepare-commit阶段日志不能并行回放。
-
opneGauss针对这些实现方案的优缺点进行兼收并取,它的实现方案有如下特点
-
主机发送日志到备机实现同步。
-
备机日志实时落盘,同时将日志流并行解码、读取和回放事务日志。
-
保证极大化日志回放吞吐,功能切分服务化、流水线协同、减少串行度。
-
批处理化回放,消除单条回放反复获取/释放锁的并发控制和IO开销。
-
Block级物理并行,去除按表切割并行机制,locality更好、并行度更高。
-
参数自调优、SQL智识别
面临的问题:
- 数据库属于复杂软件系统,而复杂软件系统参数调优一直是一个大难题;
- 不同软硬配置差异和不同负载,相同参数性能差异巨大。
- 在千万级组合中快速找到最佳配置是极为挑战的难题。
X-Turner
数据库自带的调优工具,通过结合深度强化学习和启发式算法,实现在无需人工干预的情况下,获得最佳数据库参数。
- 鲁棒性:内容容错和紧急处理机制,系统出现故障、异常时,算法正常退出,不会影响系统。
- 可扩展:基准测试模块、调优算法模块、连接模块、日志模块的架构,层次性极强,方便用户进行优化或拓展功能模块。
Predictor
基于机器学习且具有在线学习能力的查询时间预测工具。通过不断的学习数据库内收集的历史执行信息,实现计划和执行时间预测功能。
- 依赖小:不需要SQL执行计划,消除数据库的性能影响。
- 应用广:适用OLTP、OLAP场景,经改造甚至可以用于NoSQL。
- 易扩展:用户可轻易设计自己的预测模型。
-
融合内存引擎MoT架构
适用场景:
- 高吞吐低时延事务处理
- 性能加速
- 中间层缓存
- 大规模数据流分析处理
- 低成本
MoT表的特点:
- 支持行存事务处理
- 优化多核和大内存服务器线性扩展
- 支持事务的ACID、持久化、高可用
- 完全整合入openGauss数据库
- 支持X86平台和ARM64鲲鹏平台
- 性能是磁盘表的3倍
技术优势:
- 基于全内存优化实现的免锁存储引擎的高度优化和并发访问控制。
- 针对NUMA优化的内存管理、事务本地化内存。
- 利用openGauss现有的查询引擎,实现PG内存、兼容PG原生FDW索引,SQL标准兼容度高,功能完善。