国产CPU执行SPL实现数据库运算的性能实用性测试

简介: 任务背景国际大环境就不用多说了。对于数据库类的关键业务,全国产技术(国产CPU+国产数据库)和国外主流技术在性能上相比还有不小的差距,经常需要借助分布式技术使用数倍的硬件才能获得类似的效果。

作者石臻臻, CSDN博客之星Top5Kafka Contributornacos Contributor华为云 MVP ,腾讯云TVP, 滴滴Kafka技术专家KnowStreaming PMC)


KnowStreaming  是滴滴开源的Kafka运维管控平台, 有兴趣一起参与参与开发的同学,但是怕自己能力不够的同学,可以联系我,带你一起你参与开源!

1任务背景

国际大环境就不用多说了。

对于数据库类的关键业务,全国产技术(国产CPU+国产数据库)和国外主流技术在性能上相比还有不小的差距,经常需要借助分布式技术使用数倍的硬件才能获得类似的效果。

国产编程语言SPL的问世,可以方便程序员写出(比SQL)更短小简单且计算量更低的代码(针对同样计算任务),能够对采用SQL的主流数据库形成明显的效率和性能优势。这样,在国产CPU上运行用SPL编写的数据库运算,就可能获得在国外CPU上运行SQL数据库的同样性能,甚至大幅超过。从而使数据库运算类的关键业务实现全国产技术替代。

本次测试设计了三个计算任务,涉及常规查询、复杂在线查询和离线跑批任务,分别在海光、龙芯、飞腾三款国产芯片上运行后看效果,并对比历史上在国外芯片上运行的情况。

2系统配置

海光 龙芯 飞腾
CPU 2颗 7285,共64核 4颗 3C5000,共64核 2颗 2500,共128核
RAM 256G 256G 256G
硬盘 SSD SSD SSD
OS 麒麟 V10 Loongnix 麒麟 V10
SPL 开源社区版202208

3测试一 常规查询,TPCH 100G

TPCH是国际标准,具体内容不再过多解释。

需要说明的是,TPCH虽然有22个题,但仍然不能全面反映出被测系统对实际业务的响应性能。主要原因如下两点:

1.TPCH中问题比较常规,没有涉及序运算,分步运算也较简单。而实际业务中有性能瓶颈的运算,其复杂度通常会远高于TPCH,会大量涉及序运算和分步计算;

2.测试问题已经被长期公开,有些数据库可能会专门做相应的优化;

当然,作为国际标准,也会有一定的参考价值。

TPCH各题的SPL写法可参考:从 TPCH 测试学习性能优化技巧

测试结果(单位:秒)

海光 龙芯 飞腾 Intel+Oracle
Q1 25 40 33 131
Q2 2 4 3 27
Q3 8 19 15 222
Q4 4 12 9 207
Q5 15 20 27 225
Q6 3 7 8 135
Q7 11 18 21 184
Q8 13 20 28 192
Q9 31 63 58 234
Q10 10 19 16 215
Q11 2 5 4 33
Q12 7 19 13 184
Q13 97 195 152 37
Q14 6 22 20 157
Q15 12 22 24 155
Q16 9 19 15 13
Q17 9 13 25 165
Q18 7 21 14 344
Q19 9 16 16 154
Q20 7 12 16 175
Q21 19 24 24 326
Q22 23 37 33 48
AVG 14.95 28.5 26.09 161.95
AVG-G 9.68 19.22 18.36 125.56

1.海光、龙芯、飞腾均以32线程运算,初步的测试表明,大多数运算在这个并行数下最快。

2.AVG行是22个题的平均时间;AVG-G行是几何平均数,这样能反应出性能差距的倍数关系,规避某些题因为普遍都慢在简单平均时权重太大的问题。

3.最右边对比列,硬件环境:2颗Intel 3014 1.7G共12核,64G内存;Oracle运行12线程。因CPU主频及并行数不同,没有直接可比性,但仍有参考价值。

4.SPL的Q13的表现有点特殊,因为Q13在这个线程数时,会占用过大内存;而SPL用Java实现,内存不足时会导致大量的垃圾收集时间。本次测试目标不是调出每个题的最优性能,就没有刻意再优化它。

4测试二 离线数据准备,国家天文台聚类计算

这是国家天文台的实际业务,测试也采用了真实数据。

共11张照片,每张有500万天体,将位置(天文距离)邻近的天体聚合成一个计算属性。期望计算时间在数小时内,因为每天都会有新的照片拍摄出来,必须当天处理完。

本任务的数据量不大(<10G),但计算量非常大,和规模的平方成正比。

用某分布式数据库动用100个CPU,仅处理50万天体也需要3.8小时,处理500万目标规模预计需要15天,不具有实用性。

详情可参考:SPL 提速天体聚类任务 2000 倍

测试结果(单位:小时)

并行数 16 32 64
海光 3.91 2.39 2.21
龙芯 6.65 4.04 3.96
飞腾 9.27 5.33 3.64

更高并行没有表现出线性加速,主要是因为这个问题的特殊性,运算步骤之间有依赖关系,各个线程会有重复计算,无法做到线性提速。

三款芯片均可以在目标数据规模时达到任务要求的时间指标,性能都具有实用性。

5测试三 在线查询,电商漏斗计算

电商漏斗是典型的有序计算,需要统计在指定时间窗口按指定次序发生多次事件中前N个的用户数,以便计算用户流失率为营销动作提供依据。

这是用户行为分析中很常见的计算,也是传统数据库很难高速完成的计算。

漏斗计算的细节和SPL加速方法可参考:SQL 提速:漏斗转化分析

本题是美国一家电商企业的真实案例,漏斗共有5步,计算难度较高。使用该企业在某个分站点一个月的脱敏数据,规模接近4亿行。这个运算用SQL在美国著名云数据仓库Snowflake的Medium级服务器(相当于64核)上三分钟未跑出结果,用户期望不超过30秒。

测试结果(单位:秒)

并行数 32 16 8 4
海光 16 18 29 59
龙芯 32 41 59 101
飞腾 25 30 44 76

三款芯片在32线程时的运算性能可以达到或接近用户的期望值。

6补充说明

1.测试海光时还使用过CentOS,性能表现要比使用麒麟时有较明显的优势(天文台运算64线在1.5小时内完成);测试飞腾时仅使用了麒麟,有可能其性能被操作系统影响;龙芯的Loongnix看起来表现较出色。

2.在龙芯上还做过一个军方外围任务测试:在82亿行的脱敏海事数据中按时间段和经纬度范围查找经过船只,龙芯上SPL的执行性能大概相当于Intel3014的50%,仍比Intel8260上的MySQL快了数倍到上百倍(和时间段宽度有关)。

7初步结论

1.海光的性能表现明显在三者中最强,性能大约是龙芯和飞腾的两倍。龙芯总体较飞腾稍弱,但差距不是很大,在长时间小并行任务中还能胜出。

2.使用SPL编程时,这三款国产芯片都能胜任数据仓库类的复杂计算场景,能赶上甚至大幅超越国外芯片上国外数据库的性能,完全可应用于关键的数据计算任务。

8SPL资料

目录
相关文章
|
5月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
425 158
|
5月前
|
缓存 监控 关系型数据库
使用MYSQL Report分析数据库性能(中)
使用MYSQL Report分析数据库性能
396 156
|
5月前
|
缓存 监控 关系型数据库
使用MYSQL Report分析数据库性能(上)
最终建议:当前系统是完美的读密集型负载模型,优化重点应放在减少行读取量和提高数据定位效率。通过索引优化、分区策略和内存缓存,预期可降低30%的CPU负载,同时保持100%的缓冲池命中率。建议每百万次查询后刷新统计信息以持续优化
503 161
|
9月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
5月前
|
测试技术 UED 开发者
性能测试报告-用于项目的性能验证、性能调优、发现性能缺陷等应用场景
性能测试报告用于评估系统性能、稳定性和安全性,涵盖测试环境、方法、指标分析及缺陷优化建议,是保障软件质量与用户体验的关键文档。
|
9月前
|
Cloud Native 关系型数据库 分布式数据库
阿里云PolarDB与沃趣科技携手打造一体化数据库解决方案,助推国产数据库生态发展
阿里云瑶池数据库与沃趣科技将继续深化合作,共同推动国产数据库技术的持续创新与广泛应用,为行业生态的繁荣注入更强劲的技术动力。
阿里云PolarDB与沃趣科技携手打造一体化数据库解决方案,助推国产数据库生态发展
|
10月前
|
Java 测试技术 数据库
使用benchmarksql测试数据库处理能力
传统的OLTP业务,应用系统使用 java 开发,并且不建议使用存储过程,使用 benchmarksql 压测数据库最公平,既可以测试数据库性能,也可以测试JDBC驱动
720 88
|
6月前
|
缓存 关系型数据库 MySQL
MySQL数据库性能调优:实用技术与策略
通过秉持以上的策略实施具体的优化措施,可以确保MySQL数据库的高效稳定运行。务必结合具体情况,动态调整优化策略,才能充分发挥数据库的性能潜力。
267 0
|
9月前
|
存储 算法 Java
实现不同数据库的表间的 JOIN 运算的极简方法
跨库计算是数据分析中的常见难题,尤其涉及多数据库系统时,表间 JOIN 操作复杂度显著提升。esProc 提供了一种高效解决方案,能够简化跨库 JOIN 的实现。例如,在车辆管理、交管和公民信息系统中,通过 esProc 可轻松完成如下任务:按城市统计有车公民事件数量、找出近一年获表彰的车主信息,以及按年份和品牌统计车辆违章次数。esProc 支持不同关联场景(如维表关联与主子表关联)的优化算法,如内存索引、游标处理和有序归并,从而大幅提升编码和运算效率。无论是同构还是异构数据源,esProc 均能灵活应对,为复杂数据分析提供强大支持。
|
10月前
|
SQL 运维 监控
数据库国产化选型?YashanDB 给中大型企业的五个答案
近两年,“国产数据库”成为企业数字化升级的重要议题。YashanDB作为新一代国产关系型数据库,以完整产品矩阵解决企业核心关切:通过图形化工具提升开发效率;提供自动化迁移平台简化数据库切换;云管理工具减轻运维负担;支持复杂业务场景;拥有成熟团队保障企业级服务。YashanDB不仅是“可替代”,更是“更可靠”的选择,助力企业实现高效、可控的数据库升级。