全部產品
Search
文件中心

PolarDB:查詢加速

更新時間:May 01, 2026

本文介紹PolarDB MySQL版列存表在單機執行階段的加速能力、效能表現和觀測方法。預設情況下,列存查詢會優先由最佳化器選擇是否走MPP計劃,當查詢被調度到某個執行節點後,節點內部仍然依賴單機列執行最佳化來降低時延。本文重點介紹這部分節點內執行最佳化能力。

背景與價值

隨著分析型查詢資料量持續增長,單機執行容易在以下幾個方面成為瓶頸:

  • 讀取了查詢不需要的列

  • 掃描了最終會被過濾掉的資料區塊

  • 相同資料頁重複讀取、重複解碼

  • 單機緩衝無法覆蓋熱點資料

  • 大表彙總、Join、排序對CPU和記憶體頻寬要求高

全列存表的列執行加速能力,目標就是把“唯讀必要列、只處理必要資料、盡量複用已解碼結果”落實到執行鏈路中,從而降低查詢時延並提升吞吐。

從執行鏈路看,這部分最佳化主要體現在:

  • 按查詢所需列讀取資料,減少無效列掃描。

  • 將可下推謂詞盡量下推到底層儲存,提前做Stripe粒度或資料區塊裁剪。

  • 通過可見度視圖快速過濾檔案減少無效行進入後續彙總、排序和運算式計算。

  • 複用OSS頁緩衝與中繼資料快取,降低重複讀取和重複解碼成本。

  • 按批次向執行層輸送資料,發揮向量化批處理優勢。

與多機並行能力的關係及判斷方法

本文聚焦單機執行加速。關於列存表多機並存執行能力、適用情境和分區設計,請參見多機分析

如果需要區分某條SQL最終是否走了MPP計劃,可以查看執行計畫中是否存在Exchange運算元。

EXPLAIN SELECT /*+ SET_VAR(imci_plan_use_mpp=forced) */ COUNT(*) FROM nation;

若執行計畫中出現Exchange運算元,說明該SQL可以使用列存多機並行能力。若實際執行計畫中出現Exchange運算元,則說明該SQL最終按MPP計劃執行。反之,如果執行計畫中沒有Exchange,則表示該SQL按單機計劃執行。

效能測試結果

以下是一個規格為32核256 GB,在TPC-H 1 100 GB的全列存表單機熱態測試結果:

說明

本文的TPC-H的實現基於TPC-H的基準測試,並不能與發行的TPC-H基準測試結果相比較,本文中的測試並不完全符合TPC-H的所有要求。

Query

Time(s)

Q1

1.175

Q2

0.178

Q3

0.577

Q4

0.433

Q5

0.522

Q6

0.366

Q7

0.633

Q8

0.528

Q9

2.817

Q10

0.935

Q11

0.218

Q12

0.535

Q13

1.255

Q14

0.442

Q15

0.889

Q16

0.553

Q17

0.738

Q18

2.381

Q19

0.759

Q20

0.453

Q21

1.308

Q22

0.299

TOTAL

17.994