全部产品
Search
文档中心

云原生数据库 PolarDB:并行查询性能

更新时间:Dec 17, 2024

本文档基于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集群负载并行查询测试方法执行结果。关于如何配置参数,具体操作步骤请参见设置集群参数和节点参数

  • 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

说明

parallel_degree_policy参数被设定为TYPICAL时,PolarDB在选择查询并行度时将不会考虑数据库的当前负载情况(例如CPU使用率等),而是会尽可能地与max_parallel_degree参数所设定的并行度保持一致。

执行结果

  • 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.1测试结果对比图

  • 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测试结果对比图