本文档基于TPC-H测试PolarDB MySQL引擎8.0.1和8.0.2版本集群版的OLAP负载性能,您可以按照本文介绍自行测试对比,快速了解数据库系统的性能。

并行查询简介

PolarDB MySQL引擎8.0版本集群版推出并行查询(Parallel Query)框架。当您的查询数据量到达一定阈值,就会自动启动并行查询框架,从而使查询耗时指数级下降。具体请参见并行查询(Parallel Query)

PolarDB MySQL引擎8.0.1版本中,并行查询在存储层将数据分片到不同的线程上,多个线程并行计算,将结果流水线汇聚到总线程,最后由总线程做简单归并将结果返回给用户,提高查询效率。

PolarDB MySQL引擎8.0.2版本中,并行查询将线性加速能力提升了一个等级,引入了多阶段并行计算能力。基于代价优化为更为灵活的并行执行计划,改进了8.0.1版本并行查询可能存在的Leader单点瓶颈和Worker负载不均衡的问题。具体来说,在存储层仍然将数据分片到不同的线程上,多个线程并行计算,并可能分发到下一个阶段的并行Worker组中,最终并行计算结果汇总到Leader并返回给用户,大幅提升了并行执行能力。

并行查询利用多核CPU的并行处理能力,以8核32 GB独享规格的集群为例,并行查询示意图如下所示。

示意图
下文将介绍8.0.1和8.0.2版本并行查询参数取值分别设置为如下表所示时,PolarDB集群负载性能测试方法(OLAP)执行结果。关于如何配置参数,具体操作步骤请参见设置集群参数和节点参数
  • 8.0.1
    参数 默认值 优化后的值
    loose_parallel_degree_policy REPLICA_AUTO TYPICAL
    loose_max_parallel_degree 0 16
  • 8.0.2
    参数 默认值 优化后的值
    loose_parallel_degree_policy REPLICA_AUTO TYPICAL
    loose_parallel_query_switch '' 'force_run_using_planning_dop=on'
    loose_optimizer_switch '' 'hash_join_cost_based=off'
    loose_max_parallel_degree 0 16

执行结果

  • 8.0.1版本的测试结果如下所示:
    查询 默认值耗时(秒) 优化后的值耗时(秒)
    Q1 2495.05 86.63
    Q2 13.18 1.46
    Q3 345.56 28.67
    Q4 63.78 6.26
    Q5 251.48 258.55
    Q6 241.7 16.4
    Q7 174.91 171.85
    Q8 560.82 572.63
    Q9 450.68 42.17
    Q10 895.75 270.29
    Q11 30.03 11.6
    Q12 266.14 17.65
    Q13 780.74 127.1
    Q14 72.04 7.57
    Q15 261.77 56.55
    Q16 40.69 24.29
    Q17 57.75 13.04
    Q18 257.66 136.79
    Q19 19.17 1.52
    Q20 143.97 49.72
    Q21 293.99 37.79
    Q22 18.81 2.15
    透视图
  • 8.0.2版本的测试结果如下所示:
    查询 默认值耗时(秒) 优化后的值耗时(秒)
    Q1 573.34 89.65
    Q2 3.62 0.66
    Q3 96.89 28.52
    Q4 18.66 6.41
    Q5 150.93 28.93
    Q6 68.13 17.13
    Q7 114.56 17.39
    Q8 333.36 54.32
    Q9 136.26 42.15
    Q10 325.19 128.55
    Q11 11.49 4.53
    Q12 121.68 17.54
    Q13 281.1 126.2
    Q14 23.34 7.59
    Q15 77.22 33.02
    Q16 12.15 8.96
    Q17 4.51 1.13
    Q18 325.05 133.07
    Q19 5.37 1.5
    Q20 70.31 90.75
    Q21 171.81 29.87
    Q22 6.05 2.16
    8.0.2