分类: 敏捷开发
2019-10-23 14:49:23
一、 测试背景
由于众所周知的世界经贸形势,拥有全面自主可控的IT解决方案成为摆在国家面前的一项重要任务。但是,由于目前国产芯片的性能还相对较弱,大多只能应用于OA等边缘业务,要用到关键业务中时就必须加大成本以扩大集群规模,这将进一步推高因为生态成熟度还不足而导致本身成本就不低的全国产技术方案的应用门槛,抑制了全国产技术的推广应用范围。
SPL计算数据库是一项从理论模型到代码实现都拥有完全自主产权的新技术,它采用了创新代数体系,允许程序员实现更高性能的低复杂度算法,从而获得比传统关系数据库更好的运算性能。因此,可以通过软件弥补硬件,使较低性能的国产芯片不需要扩大集群规模就能够适应原来必须使用国外芯片的应用场景,并且还有一定程度的性能提升。
.red {color:red} .blue {color:blue} .tblhead {background-color:#b9b9b9} .tbltitle {text-align:center;border:none;}二、 测试方法
采用国际上公认的数据库性能测试工具TPCH,通过与国外数据库产品的杰出代表Oracle12.1.0及另一国产数据库(下文中简称国产数据库)进行对比测试。
TPCH是由TPC(Transaction Processing Performance Council)事务处理性能委员会公布的一套针对数据库决策支持能力的测试基准,通过模拟数据库中与业务相关的复杂查询考察数据库的综合处理能力,获取数据库操作的响应时间。
TPCH基准模型中定义了一个数据库模型,容量可以在1GB~10000GB的8个级别中进行选择。数据库模型包括CUSTOMER、LINEITEM、NATION、ORDERS、PART、PARTSUPP、REGION和SUPPLIER 8张数据表,涉及22条复杂的SQL查询语句。
TPCH测试具有广泛的权威性和被认可度,涉及内容丰富,可以避免片面性,并确保测试结论的说服力。
传统数据库都是用SQL语言进行查询,在SPL数据库中,需要将TPCH提供的SQL翻译成SPL脚本来运行。
三、 测试环境
本场测试分别在五台不同配置的独立服务器上作运行测试,分别命名为intel2670、intel3014、龙芯、飞腾FT1500、飞腾FT2000,硬件配置如下表:
名称 | CPU | 内存 | 硬盘类型 |
Intel2670 | 2个intel2670 CPU,主频2.6G,共计16核 | 128G | SSD固态硬盘 |
Intel3014 | 2个intel3014 CPU,主频1.7G,共计12核 | 64G | |
龙芯 | 2个CPU,共计8核 | 64G | |
FT1500飞腾 | 飞腾CPU,共计16核 | 32G | |
FT2000飞腾 | 飞腾CPU,共计64核 | 256G |
国产数据库只在龙芯上测试,Oracle 只在 intel 上测试,SPL 在五台服务器上均做了测试。
四、 数据准备
测试数据均采用TPCH提供的数据生成程序产生,产生了100G和200G两种规模的测试数据,100G数据用在intel3014、龙芯、飞腾FT1500、飞腾FT2000四台服务器上,200G数据用在intel2670、飞腾FT2000两台服务器上。
TPCH产生原始文本文件数据以后,需要导入数据库表中供数据库软件查询使用。SPL数据库使用的数据存储在硬盘组表文件中,也需要由原始文本数据转换生成。下表是转换成所需要的测试数据所花的时间(共有8张表,只比较数据量较大的3张表)。
数据表名 | LINEITEM | ORDERS | PARTSUPP | |
100G | Oracle(intel3014) | 09:40:59 | 01:31:34 | 00:59:02 |
SPL组表(intel3014) | 01:40:00 | 00:17:48 | 00:10:47 | |
国产数据库(龙芯) | 01:55:37 | 00:17:41 | 00:10:18 | |
200G | Oracle(intel2670) | 37:47:28 | 07:43:54 | 03:12:30 |
SPL组表(intel2670) | 01:52:57 | 00:25:20 | 00:17:23 |
可以看出, Oracle数据导入的时间非常长。SPL和国产数据库的导入时间相当,这方面均比Oracle有数倍的性能优势。
五、 测试结果
测试的三种软件均支持并行查询,即用多线程共同协调完成一次查询任务。然而并行的路数并不是越多越好,因此在每台测试服务器上需要测出查询速度最快的并行数。我们用TPCH的第一条查询任务作测试,在每台测试服务上的并行查询结果如下:
数据量 | 服务器 | 并行数 | 1 | 2 | 4 | 8 | 12 | 16 |
100G | Intel3014 | Oracle | 570 | 356 | 219 | 170 | 131 | 141 |
SPL组表 | 336 | 174 | 91 | 46 | 38 | 40 | ||
龙芯 | 国产数据库 | 1620 | 961 | 553 | 507 | 579 | 694 | |
SPL组表 | 1521 |
|
525 | 275 | 284 |
|
||
FT1500飞腾 | SPL组表 | 711 | 367 | 198 | 95 |
|
62 | |
服务器 | 并行数 | 8 | 16 | 32 | 40 | 48 | 64 | |
FT2000飞腾 | SPL组表 |
|
37 | 22 | 19 | 21 | 40 | |
200G | Intel2670 | Oracle | 318 | 316 | 318 |
|
|
|
SPL组表 | 63 | 40 | 41 |
|
|
|
||
FT2000飞腾 | SPL组表 |
|
|
|
36 |
|
|
上表中红色数字对应的并行数,即为各测试服务器上最佳的并行数,于是TPCH后面各查询测试中就以此并行数来进行测试。
测试结果如下表:
TPCH 编号 |
100G数据 | 200G数据 | |||||||
Intel3014 (12并行) |
FT1500 (16并行) |
FT2000 (40并行) |
龙芯 (8并行) |
Intel2670 (16并行) |
FT2000 (40并行) |
||||
SPL | Oracle | SPL | SPL | SPL | 国产数据库 | SPL | Oracle | SPL | |
1 | 38 | 131 | 62 | 19 | 275 | 507 | 40 | 325 | 36 |
2 | 4 | 27 | 8 | 6 | 18 | 247 | 8 | 73 | 13 |
3 | 16 | 222 | 33 | 22 | 97 | 4451 | 23 | 582 | 35 |
4 | 12 | 207 | 27 | 18 | 89 | 1790 | 21 | 454 | 43 |
5 | 20 | 225 | 36 | 24 | 72 | 1761 | 25 | 463 | 45 |
6 | 9 | 135 | 22 | 6 | 60 | 757 | 11 | 352 | 12 |
7 | 16 | 184 | 32 | 20 | 91 | 700 | 22 | 496 | 30 |
8 | 29 | 192 | 46 | 48 | 93 | 1611 | 29 | 485 | 80 |
9 | 68 | 234 | 125 | 65 | 517 | 1066 | 85 | 636 | 135 |
10 | 23 | 215 | 35 | 22 | 99 | 1634 | 34 | 493 | 42 |
11 | 5 | 33 | 12 | 6 | 29 | 165 | 9 | 63 | 11 |
12 | 25 | 184 | 72 | 38 | 173 | 647 | 52 | 464 | 55 |
13 | 57 | 37 | 114 | 85 | 335 | 2209 | 135 | 103 | 135 |
14 | 22 | 157 | 65 | 12 | 142 | 500 | 65 | 368 | 38 |
15 | 18 | 155 | 60 | 26 | 103 | 506 | 61 | 358 | 46 |
16 | 10 | 13 | 19 | 12 | 53 | 105 | 14 | 71 | 22 |
17 | 21 | 165 | 48 | 9 | 100 | 963 | 40 | 349 | 19 |
18 | 21 | 344 | 35 | 13 | 163 | 2382 | 25 | 966 | 26 |
19 | 23 | 154 | 65 | 12 | 137 | 518 | 60 | 345 | 29 |
20 | 18 | 175 | 57 | 11 | 110 | 594 | 55 | 442 | 20 |
21 | 233 | 326 | 222 | 190 | 901 | 3349 | 191 | 790 | 398 |
22 | 22 | 48 | 37 | 27 | 99 | 139 | 30 | 99 | 49 |
合计 | 710 | 3563 | 1232 | 691 | 3756 | 26601 | 1035 | 8777 | 1319 |
六、 结论
将测试结果制成统计图示:
可以看出如下一些结论:
1. 在同一台测试机上使用同一份TPCH测试数据,比较22条查询所用的总时间,使用了新算法的SPL比Oracle要快5-7 倍,创新理论和算法确实有效。
2. 在飞腾FT1500上比intel3014上的Oracle快了近 3 倍,在飞腾FT2000上比intel2670上的Oracle快了5 倍还多。在飞腾芯片上搭载的SPL数据库,远远超过了Intel上Oracle的运算性能,应用于关键业务完全没有问题。
3. 龙芯相对略弱,但在SPL的支持下,也能和intel3014上的oracle速度基本相当(接近 95%),基本可应用于关键业务中了。
4. 龙芯上国产数据库性能较差,只能达到Intel3014上Oracle的七分之一左右,基本不具备应用于关键业务的能力。