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

并行查询简介

PolarDB MySQL版8.0版本集群版推出并行查询(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_policyREPLICA_AUTOTYPICAL
    loose_max_parallel_degree016
  • 8.0.2
    参数默认值优化后的值
    loose_parallel_degree_policyREPLICA_AUTOTYPICAL
    loose_parallel_query_switch'''force_run_using_planning_dop=on'
    loose_optimizer_switch'''hash_join_cost_based=off'
    loose_max_parallel_degree016

执行结果

  • 8.0.1版本的测试结果如下所示:
    查询默认值耗时(秒)优化后的值耗时(秒)
    Q12495.0586.63
    Q213.181.46
    Q3345.5628.67
    Q463.786.26
    Q5251.48258.55
    Q6241.716.4
    Q7174.91171.85
    Q8560.82572.63
    Q9450.6842.17
    Q10895.75270.29
    Q1130.0311.6
    Q12266.1417.65
    Q13780.74127.1
    Q1472.047.57
    Q15261.7756.55
    Q1640.6924.29
    Q1757.7513.04
    Q18257.66136.79
    Q1919.171.52
    Q20143.9749.72
    Q21293.9937.79
    Q2218.812.15
    8.0.1测试结果对比图
  • 8.0.2版本的测试结果如下所示:
    查询默认值耗时(秒)优化后的值耗时(秒)
    Q1573.3489.65
    Q23.620.66
    Q396.8928.52
    Q418.666.41
    Q5150.9328.93
    Q668.1317.13
    Q7114.5617.39
    Q8333.3654.32
    Q9136.2642.15
    Q10325.19128.55
    Q1111.494.53
    Q12121.6817.54
    Q13281.1126.2
    Q1423.347.59
    Q1577.2233.02
    Q1612.158.96
    Q174.511.13
    Q18325.05133.07
    Q195.371.5
    Q2070.3190.75
    Q21171.8129.87
    Q226.052.16
    8.0.2测试结果对比图