全国产计算数据库性能测试报告
一、 测试背景
由于众所周知的世界经贸形势,拥有全面自主可控的IT解决方案成为摆在国家面前的一项重要任务。但是,由于目前国产芯片的性能还相对较弱,大多只能应用于OA等边缘业务,要用到关键业务中时就必须加大成本以扩大集群规模,这将进一步推高因为生态成熟度还不足而导致本身成本就不低的全国产技术方案的应用门槛,抑制了全国产技术的推广应用范围。
SPL计算数据库是一项从理论模型到代码实现都拥有完全自主产权的新技术,它采用了创新代数体系,允许程序员实现更高性能的低复杂度算法,从而获得比传统关系数据库更好的运算性能。因此,可以通过软件弥补硬件,使较低性能的国产芯片不需要扩大集群规模就能够适应原来必须使用国外芯片的应用场景,并且还有一定程度的性能提升。
二、 测试方法
采用国际上公认的数据库性能测试工具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 |
21 |
222 |
33 |
22 |
97 |
4451 |
23 |
582 |
35 |
4 |
15 |
207 |
27 |
18 |
89 |
1790 |
21 |
454 |
43 |
5 |
34 |
225 |
36 |
24 |
72 |
1761 |
25 |
463 |
45 |
6 |
12 |
135 |
22 |
6 |
60 |
757 |
11 |
352 |
12 |
7 |
25 |
184 |
32 |
20 |
91 |
700 |
22 |
496 |
30 |
8 |
37 |
192 |
46 |
48 |
93 |
1611 |
29 |
485 |
80 |
9 |
68 |
234 |
125 |
65 |
517 |
1066 |
85 |
636 |
135 |
10 |
21 |
215 |
35 |
22 |
99 |
1634 |
34 |
493 |
42 |
11 |
5 |
33 |
12 |
6 |
29 |
165 |
9 |
63 |
11 |
12 |
20 |
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 |
17 |
165 |
48 |
9 |
100 |
963 |
40 |
349 |
19 |
18 |
16 |
344 |
35 |
13 |
163 |
2382 |
25 |
966 |
26 |
19 |
15 |
154 |
65 |
12 |
137 |
518 |
60 |
345 |
29 |
20 |
15 |
175 |
57 |
11 |
110 |
594 |
55 |
442 |
20 |
21 |
27 |
326 |
222 |
190 |
901 |
3349 |
191 |
790 |
398 |
22 |
19 |
48 |
37 |
27 |
99 |
139 |
30 |
99 |
49 |
合计 |
516 |
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的七分之一左右,基本不具备应用于关键业务的能力。
请问是测试的龙芯的哪个型号?为什么不写明型号?
从 10 年前到现在,龙芯的 4 核 CPU 有多款,最老的和最新的性能有 10 倍差距。
不写明型号的测试有什么意义?
另外,Intel3014 的,我只找到了:
英特尔® 至强® 处理器 L3014(3M 高速缓存,2.40 GHz) 单核。
这是一个单核的 CPU,但上面表格说 2 颗总 12 核,对不上,能说一下完整的型号吗?
你猜今年的 AMD 的 4 核 CPU,与几年前的 Intel Atom 4 核相比,能有几倍的性能差距?
如果不写型号,那是不是可以得出 AMD 的性能是 Intel 数倍甚至数十倍的结论?
我不知道一个对 CPU 的性能对比测试却不写明 CPU 型号,是什么目的?
机器是合作的服务器厂商提供的,我们对此不是非常熟悉,刚才问了下具体型号是这样:
龙芯 3B3000,我们以为龙芯只有一种主流服务器型号😳 ,也就没去细问。
Intel3014,厂家给的数据是 超强 R628,2*Intel Xeon 3014,每颗 6 核 1.7G,跑了一下果然是 6 核,主频就相信厂家说法了。但这个 R628 可能是厂家的机器型号?
如果有更好的龙芯,那相信还能跑出更出色的成绩!
好的。谢谢,看来龙芯在跑某些应用时,性能发挥比较差。主要是龙芯 3B3000 与 FT1500 的实际性能差距不会这么大,因此才质疑测试时是使用的老旧型号。那么现在看来,还软件对特定平台的优化程度不同才是造成龙芯测试成绩超低的主要原因,龙芯的系统和软件优化还是太差。