KunlunDB 查詢優化(一)

KunlunDB發表於2022-01-17


前面 介紹了 KunlunDB的架構以及技術,應該會有朋友好奇其查詢優化的過程吧,本篇章帶來的是查詢優化這一塊的具體流程介紹,後續也會出一篇例項來舉例演示。

當然後續也會對KunlunDB的其它技術方面(比如資料分片這些)做例項演示,以方便大家去了解KunlunDB。


查詢優化流程

KunlunDB是計算和儲存分離的分散式資料庫系統,當一條查詢SQL傳送到KunlunDB任一計算節點(CN)時, KunlunDB語法解析器(Parser)首先會對原始查詢文字做出解析以及一些簡單的合法性驗證,之後會對查詢做邏輯優化:如查詢重寫,分割槽修剪,列裁剪,謂詞下推等。

KunlunDB在邏輯優化過程中會採取最大下推的策略。

計算下推不但可以避免CN和DN間資料網路互動還可以充分利用多分片併發執行的能力和各個DN資源,加速查詢。

優化後的運算元分為兩類:
 

  • 可以下推的運算元:RemoteScan將該運算元推送到對應的資料節點上執行,執行完成後拉取相應的資料到計算節點做後繼處理。 支援下推的運算元包括:過濾條件,如WHERE或HAVING中的條件。聚合運算元,如COUNT,GROUP BY等,會分成兩階段進行聚合計算。排序運算元,如ORDER BY,JOIN和子查詢。Project,投影操作。Distinct排重。
     
  • 無法下推的部分運算元:如跨 shard 的join,需要將資料從資料節點拉取到計算節點做計算,優化器會選擇最優的方式來執行,如選擇合適的並行度策略等

    
全域性執行流程如下:
 

KunlunDB 查詢優化(一)

 

優化流程如下:

KunlunDB 查詢優化(一)

最大下推策略如下:

 


KunlunDB 查詢優化(一)

KunlunDB 查詢優化(一)



  


KunlunDB 查詢優化(一)

綜述:為獲取最大效能,在定義分割槽鍵時要充分考慮業務在執行SQL 語句的場景,以最大限度避免跨節點資料操作

END


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70011764/viewspace-2852636/,如需轉載,請註明出處,否則將追究法律責任。

相關文章