跳转至

高性能

高性能

随着企业业务数据量呈爆炸式增长,数据库性能问题变得越来越突出。SeaboxSQL数据库在内核层面进行了深层次优化,针对不同应用场景均有显著提升。针对传统的OLTP场景,SeaboxSQL数据库在事务处理方面进行了线程NUMA绑定、数据结构NUMA化、全局数组优化、WAL锁优化等策略,benchmarkSQL基准测试,性能较原生PostgreSQL提升约100%;针对OLAP场景,SeaboxSQL数据库支持并行查询、并行入库、矢量化执行引擎、列存储、行列混合存储等加速机制,对批量加工、报表生成的典型场景的性能提升显著。

事务处理性能

SeaboxSQL数据库在事务处理机制方面做了大量优化,包括以下方面:

  • 多线程架构支持

SeaboxSQL数据库支持多进程(原生PG)和多线程(自主研发)两种运行机制,相对PostgreSQL原生多进程架构,多线程架构具备以下优势:

多进程架构VS多线程架构

  • CPU利用率高、占用内存少,切换简单

  • 数据共享简单

  • 多并发复杂查询性能更优

  • 运行机制NUMA化,减少跨核访问,更好支持多核架构

  • 线程NUMA化,使线程运行在指定的numa node或者CPU上,减小由于在不同的核上调度造成的开销  

  • 数据结构NUMA化,与绑核配合使用,将关键数据结构平均分配在各个node上,并使线程运行在指定node,从而减小远端内存访问带来的性能开销

  • WAL日志机制优化

* 无锁临界区保护,将两个64位的全局数据位置信息通过128位原子操作替换原子锁,消除原子锁本身在跨CPU访问、原子锁退避、缓存一致性代价

* Group insert优化,在线程模式下通过group的方式进行日志的插入,减少锁的争抢,提升WAL日志的插入效率

* CLOG分区优化,由于日志缓冲池在共享内存中全局唯一,在高并发场景下,该资源的竞争成为性能瓶颈。因此按页面号进行取模运算将日志均分到多个共享内存的缓冲池中,通过打散的方式提高整体吞吐

  • 并发控制算法调整,减少单点瓶颈

事务启动获取事务快照需要获取ProcArrayLock。事务结束清理事务状态快照时,也需要获取ProcArrayLock。并发连接增大时导致全局事务管理器上获取的快照变大。用csn(提交序列号)取代快照中的xid数组,引入多版本快照机制解决锁冲突,从而加速快照的获取及可见性判断

优化效果

2022年4月,通过中国软件评测中心(工业和信息化部软件与集成电路促进中心)集中式数据库管理系统产品质量确认测试,基于华为K22T-02的适配环境,TPCC测试相关指标如下:

测试环境情况
服务器数量
1
服务器机型
华为K22R-02 CPU:Kunpeng 920
核数
128 核
主频
2.6GHZ
内存
256GB
硬盘
SSD 960GB2 SATA 4TB1
TPC-C吞吐量量(tpmC)
  • 100并发 tpmC值∶815082.02个/分钟

  • 300并发 tpmC 值∶965354.4个/分钟

  • 500并发tpmC值∶879299.32个/分钟;

OLAP处理性能

SeaboxSQL数据库自主研发了列存储、并行运算、向量计算引擎等内核功能,可有效提升OLAP场景性能,具体包括:

  • 列存储及行列混合存储机制

SeaboxSQL数据库支持sclomn列存储引擎,列存储相对行存储具备以下优势:

列存储

  • 按列聚合存储节省磁盘IO

    适合于OLAP应用,按列访问数据;例如50个字段的表,取其中3个字段,行存储需要每个读一次,列存储只需要读3次,大幅节省I/O操作

  • 列存适合压缩持续降低磁盘IO

    每个字段按列聚合存储,每列数据的特征一致,适合对数据进行压缩,节省磁盘空间,同时持续降低磁盘IO

  • 支持通过稀疏索引进一步降低磁盘IO

    稀疏索引存储列的稀疏索引统计数据避免全表扫描,利用块的统计信息,比如:最大值、最小值、平均值等,能够在不读取数据文件的情况下,排除掉不满足查询条件的块或者提前判断出全满足查询条件的块,能够有效的减少IO和运算,提升查询效率。

同时SeaboxSQL数据库支持行列混合存储机制,即小数据量写入为行存储,行存储累积超过一定阈值自动转为列存储的机制。

行列混合存储

如上图所示该机制具备以下特点:

  • 适合海量数据加工的列执行引擎

  • 适合事务型应用的行执行引擎

  • 根据业务特性选择不同执行引擎

  • 内置数据行转列的自动优化

  • 适应混合负载场景

此外,SeaboxSQL数据库列存储还支持数据按照指定字段排序等高级特性。

  • 并行运算机制

SeaboxSQL数据库支持查询、DML写入、加载、vaccum空间回收等操作类型的多线程并行执行机制,可通过设置相应参数启用,在传统应用系统报表加工或夜间跑批的场景中有较好适用性。

  • 向量计算引擎

SeaboxSQL数据库提供自主研发的VE向量计算引擎,其主要原理为:基于新一代CPU SIMD指令集加速,实现每次加工一批数据的执行器模型,同时减少CPU指令数提升代码执行效率,进而提升执行性能。

VE向量计算引擎结合列存储机制,效果更佳。