GaussDB关键技术原理——高斯数据库性能优化总结

高斯数据库GaussDB华为公司过去10年打造的一款高性能OLTP交易型数据库产品,在迭代演进过程当中吸纳当今主流数据的技术与思路,确保架构和演进层面的领先性,在达到高性能的同时能够保证事务的强一致性,在国内泛金融领域、保险、等主要行业、公司内部ERP等有广泛的应用和成功落地实践。

首先,高斯数据库从架构层面需要保证处理能力可持续提升、可横向扩展,避免某一单点问题阻碍上限的提升,因此最初架构演进上就做过深入的考虑,因此在相同代码基础上同时具备分布式、集中式两种不同的部署形态,这里集中式部署形态决定了单节点(单分片)的性能上限,而分布式将多个数据分片结合到一起通过横向扩展提升总体上限。因此从产品架构维度上看,高斯数据库的高性能技术点可分成集中式、分布式两个优化维度。

(1)集中式性能维度,主要聚焦数据库进程内的算法实现,其目标在于将节点内有限计算资源有效最大化利用。

首先,从查询执行算法的宏观维度,优化器通过查询重写、CBO/ABO代价模型确保查询整体执行步骤最优;

其次,执行引擎将执行计划内的每个算子执行效率发挥出来,通过节点内SMP对称多线程并行处理技术将多核CPU资源加以利用实现处理任务时序在时间维度重叠达到提升,通过算子Vec向量化、CodeGen/LLVM化等技术实现局部编译器执行,确保了CPU指令集微观层的优化效果,此外集中式场景还考虑单节点大容量数据场景,执行层面提供了丰富可选数据分区策略(Range、List、Hash、Interval、二级组合分区)能够根据用户业务的定义对数据查询范围进行数量级的裁剪,通过ustore存储引擎确保读写混合负载长稳性能以及空间节省,同时为了保证数据的强一致性处理WAL日志落盘也进行了异步流水化改造提升单位时间内日志持久化落盘的速率,进而提升读写事务的性能。

再次,在性能稳定性层面,同样做了线程池化、内存共享化改造能够确保并发线程在内存、CPU调度之间得到平衡,能够在极致并发场景下如5x(相对满负荷负载并发)并发性能不显著下降,十倍甚至百倍并发系统不崩溃,并已在公司MetaERP项目中得到过实战检验。

(2)分布式性能维度,主要聚焦多数据分片汇聚线性度确保性能可横向扩展,在高斯数据库里实现了CN轻量化技术、分布式单分片事务降低CN路由和本地事务处理开销能够在256大集群内线性度达0.85以上,对于分布式事务提供了轻量化全局事务GTM-lite技术能够让分布式事务开销进一步降低,在标准TP点查负载模型下32节点以内线性度达到0.9以上。

分布式大数据量处理处理场景下,分布式优化器能够基于全据统计信息合理生成分布式查询计划确保在数据搬迁-本地计算量两个维度获得最优解,实现跑批处理的高效性,分布式执行框架串联多个分片计算单元在分片间实现并行计算,实现节点内-节点间的双重并行叠加最大化分布式系统的资源利用率,在数据分布层面同样提供HASH、LIST、RANGE分布策略供客户应用场景进行选择,实现了分布-集中式分区两个维度的数据分片能力叠加,极大提升了大数据量场景下的数据剪枝优化能力,并在CBG、邮储等核心业务系统中得到实战检验其次,为了确保高斯数据库性能易用性,针对历史版本升级、异常场景下的逃生策略同样做了一些列性能辅助特性,例如SPM计划管理、SQL-PATCH能够在版本升级、系统迁移、统计信息突变场景下对已有optimal计划起到保护作用,避免计划跳变导致的性能劣化,基于线程调度抗过载逃生能有效控制慢查询等“性能炸弹”进行有效隔离,在企业应用的一些边界极端场景确保数据库性能SLA达成。

回顾过去,GaussDB在演进迭代过程中积极吸取了时下关系型数据库、分布式数据库的设计与优化方案,在短短的10年内走完了A国友商40年的演进历程,同时并未对分布式TP/AP系统的复杂性妥协,在确保单节点性能领先的前提下仍然可通过分布式提升整体的性能上限并具备0.85+不错线性扩展比。

放眼未来,随着计算机软硬件、OS/编译器/网络协议等基础软件不断革新,高斯数据库性能优化也扎根到与之相结合的新高度,在近年出现的多核128/256多核CPU,鲲鹏/x86体系结构相关背景下基于多核NUMA的优化方案也在产品里落地商用,其中鲲鹏2/4路180w/230w tpmC、32节点1600w tpmC的优势更是在友商性能性能比拼测试中获胜,此外还进行编译器相结合的优化,基于毕昇编译器的PGO、LTO、BOLT、静态编译优化等手段已在局点实战比拼中提升已有上限的20-30%,进一步巩固领先优势并在可预见的将来落地商用版本。

posted @ 2025-01-22 10:26  喜酱喜酱  阅读(26)  评论(0)    收藏  举报