全部產品
Search
文件中心

AnalyticDB:查詢流程和執行計畫

更新時間:Jul 06, 2024

本文介紹AnalyticDB MySQL版的查詢處理流程和執行計畫中的相關概念。

查詢流程

AnalyticDB MySQL版使用SQL語言完成使用者和系統內部儲存資料之間的互動。SQL查詢的執行計畫產生流程如下:
  1. 用戶端將SQL語句提交到AnalyticDB MySQL版的前端接入節點(即Controller節點)。更多關於接入節點的詳情,請參見技術架構
  2. Controller節點中解析器(Parser)會對SQL語句進行解析並產生文法樹,然後產生初步邏輯執行計畫。
  3. Controller節點中最佳化器(Optimizer)會評估是否需要對初步邏輯執行計畫進行最佳化重寫,並產生最終的邏輯執行計畫(Plan),並根據資料是否需要在網路間傳輸來決定是否需要對計划進行切分。邏輯執行計畫中會規定特定的執行處理方式,例如Join類型、Join順序、彙總方式以及資料重分布方式等。
  4. 執行計畫任務的節點(即Executor節點)會接收最終的邏輯執行計畫並將其轉化成物理執行計畫。物理執行計畫由Stage和運算元(Operator)組成,物理執行計畫中的運算元(Operator)會對資料按照一定規則進行處理。
  5. Executor節點將資料處理的最終結果返回到用戶端,或者寫入AnalyticDB MySQL版叢集的內部表以及其它外部儲存系統(如OSS)中。

執行計畫相關概念

瞭解以下概念能協助您更好地分析AnalyticDB MySQL版的執行計畫(即物理執行計畫):
  • Stage
    在執行階段,AnalyticDB MySQL版中的查詢會首先被切分為多個Stage來執行,一個Stage就是執行計畫中某一部分的物理實體。Stage的資料來源可以是底層儲存系統中的資料或者網路中傳輸的資料,一個Stage由分布在不同Executor節點上相同類型的Task組成,多個Task會平行處理資料。
    說明 AnalyticDB MySQL版SQL診斷功能支援對Stage層級進行結果診斷。更多詳情,請參見Stage層級診斷結果
  • Task

    Task是一個Stage在某個Executor節點上的執行實體,多個同類型的Task組成一個Stage,在叢集內部平行處理資料。

  • 運算元(Operator)
    運算元是AnalyticDB MySQL版的基本資料處理單元。AnalyticDB MySQL版會根據運算元所表達的語義或運算元間的依賴關係,決定使用並行還是串列執行來處理資料。
    說明 AnalyticDB MySQL版SQL診斷功能支援對運算元層級進行結果診斷。更多詳情,請參見運算元層級診斷結果
查詢計劃的執行
上圖是一個典型分組彙總查詢的處理流程,AnalyticDB MySQL版的Controller節點會把查詢的邏輯執行計畫(Plan)分區下發到執行計畫任務的各個節點上,其中:
  • Stage 2由4個Task組成,並存執行資料的掃描、過濾以及局部彙總等操作。
  • Stage 1由2個Task執行,並存執行最終的彙總操作。
  • Stage 0由1個Task執行,負責匯總Stage 1的2個Task產生的最終彙總結果。