高性能
高性能¶
随着企业业务数据量呈爆炸式增长,数据库性能问题变得越来越突出。SeaboxSQL数据库在内核层面进行了深层次优化,针对不同应用场景均有显著提升。针对传统的OLTP场景,SeaboxSQL数据库在事务处理方面进行了线程NUMA绑定、数据结构NUMA化、全局数组优化、WAL锁优化等策略,benchmarkSQL基准测试,性能较原生PostgreSQL提升约100%;针对OLAP场景,SeaboxSQL数据库支持并行查询、并行入库、矢量化执行引擎、列存储、行列混合存储等加速机制,对批量加工、报表生成的典型场景的性能提升显著。
事务处理性能¶
SeaboxSQL数据库在事务处理机制方面做了大量优化,包括以下方面:
- 多线程架构支持
SeaboxSQL数据库支持多进程(原生PG)和多线程(自主研发)两种运行机制,相对PostgreSQL原生多进程架构,多线程架构具备以下优势:
-
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向量计算引擎结合列存储机制,效果更佳。