本文介绍不同查询场景的测试方法与结果。

场景:在线报表查询

说明 本测试并未完全依照TPC-H基准测试规范,而是基于该测试规范进行了修改。本测试结果不能等同于完全遵守TPC-H测试规范所获得的测试结果,因此不能与完全遵守该测试规范获得的测试结果进行对比。
业务背景
在线报表场景中,面向单表或者多表关联后的TopN,谓词过滤以及聚合计算是典型的分析计算需求。本示例通过一个面向零售行业的决策分析系统来展示AnalyticDB MySQL版的性能。数据模型是基于TPC-H实现的,更多信息可参见TPC-H测试集
测试环境
  • AnalyticDB MySQL,弹性模式集群版。版本 3.1.3.4
  • 开源ClickHouse 32核,内核版本 20.3

本次测试数据量为1TB。

测试结果
1、统计指定时间内,有成交记录的活跃用户数。
select
  count(*)   //聚合:统计
from
  (
    select
      c_name,
      c_phone,
      o_totalprice
    from
      customer,
      orders
    where
      c_custkey = o_custkey
    and o_orderdate < date '1993-09-23'  // 谓词过滤:指定时间
    and o_orderdate > date '1993-03-23'
  ) a;

测试结果如下:

产品 查询耗时
AnalyticDB MySQL 0.7s
开源ClickHouse 2.5s
2、统计未派送订单明细,按照优先级(比如,订单客单价)排序。该报表数据可以用来跟踪订单派送的服务状态。
select  
    l_orderkey,  
    sum(l_extendedprice*(1-l_discount)) as revenue,  //聚合:潜在的收入 
    o_orderdate,  
    o_shippriority  
from  
    customer, orders, lineitem
where  
    c_mktsegment = 'MACHINERY'     // 谓词过滤
    and c_custkey = o_custkey  
    and l_orderkey = o_orderkey  
    and o_orderdate < date '1995-03-23'
    and o_orderdate > date '1995-02-23' // 谓词过滤,指定时间
    and l_shipdate > date '1995-03-23'  
    and l_shipdate < date '1996-03-23'
group by //分组操作  
    l_orderkey, //订单标识  
    o_orderdate, //订单日期  
    o_shippriority //运输优先级  
order by 
    revenue desc, //TopN:降序排序,把潜在最大收入列在前面  
    o_orderdate;
limit 
    100;

测试结果如下:

产品 查询耗时
AnalyticDB MySQL 1.2s
开源ClickHouse 10.7s
3、统计某个地区零件供货商收入。该报表数据可以用于决策在给定的区域是否需要建立一个当地分配中心。
select
        n_name,
        sum(l_extendedprice * (1 - l_discount)) as revenue  //聚合:潜在的收入 
from
        customer,
        orders,
        lineitem,
        supplier,
        nation,
        region   //六表连接  
where
        c_custkey = o_custkey
        and l_orderkey = o_orderkey
        and l_suppkey = s_suppkey
        and c_nationkey = s_nationkey
        and s_nationkey = n_nationkey
        and n_regionkey = r_regionkey
        and r_name = 'EUROPE'  // 谓词过滤:指定地区
        and o_orderdate >= date '1996-01-01'  //谓词过滤:指定时间
        and o_orderdate < date '1996-01-01' + interval '1' year
        and l_shipdate > date '1996-02-23'  
          and l_shipdate < date '1996-03-23'
group by
        n_name
order by   // TopN:按收入降序排序,注意分组和排序子句不同  
        revenue desc
limit 10

测试结果如下:

产品 查询耗时
AnalyticDB MySQL 1.3s
开源ClickHouse 3.6s

场景:交互式分析

说明 本测试并未完全依照TPC-H基准测试规范,而是基于该测试规范进行了修改。本测试结果不能等同于完全遵守TPC-H测试规范所获得的测试结果,因此不能与完全遵守该测试规范获得的测试结果进行对比。
业务背景
交互式分析指的是业务人员通过BI工具或自助式查询平台进行自由的数据探索性查询场景,查询语句的主要特点是支持多维度组合、支持多表Join、包含聚合查询、包含子查询、包含过滤条件。交互式分析性能测试标准为TPC-H测试集,更多信息可参见TPC-H测试集
测试环境
  • AnalyticDB MySQL,弹性模式集群版
  • 高性能集群,C8 x 4(96核, 768G)
  • 弹性(96Core)集群,6节点 (96核,384G)
  • 弹性(8Core)集群,1节点 (8核,32G)
测试结果(单位:秒,测试数据量为:1TB)
TPC-H查询 高性能查询耗时 弹性(96Core)查询耗时
Q1 81.59 106.43
Q2 6.57 12.83
Q3 47.87 44.1
Q4 60.13 63
Q5 45.48 59.23
Q6 11.33 2.05
Q7 55.98 38.65
Q8 56.4 77.29
Q9 147.62 132.96
Q10 48.06 41.99
Q11 11.19 15
Q12 40.53 20.71
Q13 59.79 62.93
Q14 37.67 5.33
Q15 28.53 12.68
Q16 10.18 9.89
Q17 48.63 73.22
Q18 54.88 82.86
Q19 32.07 60.67
Q20 29.53 39.87
Q21 123.89 143.43
Q22 17.41 21.96
总计 1055.33 1127.07
测试结果(单位:秒,测试数据量为:10GB)
TPC-H查询 弹性(8core)查询耗时
Q1 12.916
Q2 0.905
Q3 3.693
Q4 5.589
Q5 5.156
Q6 0.169
Q7 2.910
Q8 4.815
Q9 14.284
Q10 3.747
Q11 0.892
Q12 1.347
Q13 3.613
Q14 0.404
Q15 0.967
Q16 0.927
Q17 9.932
Q18 9.215
Q19 1.428
Q20 1.798
Q21 11.708
Q22 1.147
总计 97.562

场景:数据仓库ETL

说明 本测试并未完全依照TPC-DS基准测试规范,而是基于该测试规范进行了修改。本测试结果不能等同于完全遵守TPC-DS测试规范所获得的测试结果,因此不能与完全遵守该测试规范获得的测试结果进行对比。
业务背景
ETL场景指的是数据仓库中进行批量的数据清洗、转换和加工计算,通常扫描数据量比较大、计算逻辑复杂、关联表数量较多,计算时间比较长。ETL场景性能测试标准为TPC-DS测试集,更多信息可参见TPC-DS测试集
测试环境
  • AnalyticDB MySQL,弹性模式集群版
  • 弹性(192Core)集群,12节点(192核,768G)
测试结果(单位:毫秒)
TPC-DS查询 弹性(192Core)查询耗时
1 3,389
2 23,697
3 9,162
4 137,346
5 27,759
6 8,957
7 17,755
8 9,952
9 12,759
10 16,026
11 87,537
12 2,036
13 28,970
14 145,158
15 6,865
16 15,636
17 21,550
18 12,039
19 13,438
20 4,007
21 2,513
22 5,733
23 418,050
24 28,407
25 20,617
26 8,835
27 17,002
28 18,918
29 19,380
30 2,016
31 26,526
32 4,541
33 14,992
34 11,627
35 15,882
36 11,007
37 4,589
38 29,910
39 7,924
40 14,371
41 367
42 6,814
43 9,072
44 5,766
45 2,691
46 18,635
47 46,180
48 19,307
49 54,883
50 13,762
51 26,672
52 6,768
53 8,524
54 12,323
55 6,680
56 15,015
57 22,917
58 11,187
59 35,661
60 14,910
61 24,657
62 4,923
63 9,444
64 144,757
65 22,203
66 15,136
67 138,622
68 23,379
69 15,156
70 18,614
71 17,067
72 18,801
73 11,977
74 54,000
75 37,597
76 31,804
77 17,376
78 78,188
79 18,075
80 55,100
81 2,958
82 4,531
83 2,000
84 1,554
85 11,139
86 3,221
87 29,937
88 52,394
89 8,704
90 2,971
91 1,800
92 1,969
93 29,375
94 7,822
95 11,929
96 7,935
97 17,152
98 7,351
99 9,159
总计 2595.79(秒)