全部產品
Search
文件中心

PolarDB:並行查詢效能

更新時間:Dec 18, 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測試結果對比圖