全部產品
Search
文件中心

Hologres:執行引擎

更新時間:Jun 30, 2024

本文為您介紹Hologres的執行引擎以及內部的各組件。

執行引擎優勢

Hologres的執行引擎(主要以HQE為主)是自研的執行引擎,通過與巨量資料領域最新技術結合,實現了對各種查詢類型的高效能處理,主要具有如下優勢。
  • 分布式執行

    執行引擎是一個和儲存計算分離架構配合的分布式執行模型。執行計畫由非同步運算元組成的執行圖DAG(有向非循環圖)表示,可以表達各種複雜查詢,並且完美適配Hologres的資料存放區模型,方便對接查詢最佳化工具,利用各種查詢最佳化技術。

  • 全非同步執行

    端到端的全非同步處理架構,可以避免高並發系統的瓶頸,充分利用資源,並且最大可能地避免儲存計算分離系統帶來的讀資料延遲的影響。

  • 向量化和列處理

    運算元內部處理資料時最大可能地使用向量化執行,與儲存引擎深度整合,通過靈活的執行模型,充分利用各種索引,最大化地延遲向量物化和延遲計算,避免不必要的讀資料和計算。

  • 自適應增量處理

    對常見即時資料應用查詢模式進行自適應增量處理。

  • 特定查詢深度最佳化

    對一些特定查詢模式的獨特最佳化。

更多技術原理請參見Hologres執行引擎揭秘

Query執行過程

當用戶端下發一個Query後,在執行引擎中實際上會有多個worker節點,以其中的一個worker節點為例,執行過程如下圖所示。Query執行過程
當用戶端發起一個SQL後,執行過程如下。
  1. Frontend(FE)節點對SQL進行解析和認證,並分發至執行引擎(Query Engine)的不同執行模組。
  2. 執行引擎(Query Engine)會根據SQL的特徵走不同的執行路徑。
    • 如果是點查/點寫的情境,會跳過最佳化器(Query Optimizer,QO),直接分發至後端擷取資料,減少資料傳送鏈路,從而實現更優的效能。整個執行鏈路也叫Fixed Plan,點查(與HBase的KV查詢)、點寫情境會直接走Fixed Plan。
    • 如果是OLAP查詢和寫入情境:首先會由最佳化器(Query Optimizer,QO)對SQL進行解析,產生執行計畫,在執行計畫中會預估出運算元執行Cost、統計資訊、空間裁剪等。QO會通過產生的執行計畫,決定使用HQE、PQE、SQE或者Hive QE對運算元進行真正的計算。
      HQE、PQE、SQE的對比介紹如下。
      • HQE(Hologres Query Engine)

        Hologres自研執行引擎,採用可擴充的MPP架構全並行計算,向量化運算元發揮CPU極致算力,從而實現極致的查詢效能。(QE主要由HQE組成)。

      • PQE(Postgres Query Engine)

        用於相容Postgres提供擴充能力,支援PG生態的各種向外延展群組件,如PostGIS,UDF(PL/JAVA,PL/SQL,PL/Python)等。部分HQE還沒有支援的函數和運算元,會通過PQE執行,每個版本都在持續最佳化中,最終目標是去掉PQE。

      • SQE(Seahawks Query Engine)

        無縫對接MaxCompute(ODPS)的執行引擎,實現對MaxCompute的本地訪問,無需遷移和匯入資料,就可以高效能和全相容的訪問各種MaxCompute檔案格式,以及Hash/Range clustered table等複雜表,實現對PB級離線資料的互動式分析。

  3. 執行引擎決定正確的執行計畫,然後會通過儲存引擎(Storage Engine,SE)進行資料擷取,最後對每個Shard上的資料進行合并,返回至用戶端。