閱讀 Doris SQL 原理解析,總結下Doris中SQL解析流程: 詞法識別:解析原始SQL文本,拆分token 語法識別:將token轉換成AST 單機邏輯查詢計劃:將AST經過一系列的優化(比如,謂詞下推等)成查詢計劃,提高執行性能與效率。 分散式邏輯查詢計劃:根據分散式環境(數據分佈信息、 ...
閱讀 Doris SQL 原理解析,總結下Doris中SQL解析流程:
- 詞法識別:解析原始SQL文本,拆分token
- 語法識別:將token轉換成AST
- 單機邏輯查詢計劃:將AST經過一系列的優化(比如,謂詞下推等)成查詢計劃,提高執行性能與效率。
- 分散式邏輯查詢計劃:根據分散式環境(數據分佈信息、連接信息、Join演算法等)將單機邏輯查詢計劃轉換成分散式邏輯查詢計劃。
- 分散式物理查詢計劃:在邏輯查詢計劃的基礎上,根據數據的存儲方式和機器的分佈情況生成實際的執行計劃。
邏輯查詢與物理查詢的區別如下
- 邏輯查詢計劃(Logical Query Plan):
○ 關註邏輯操作: 邏輯查詢計劃描述了查詢的邏輯操作,即查詢的高層次邏輯結構,而不關心具體的物理執行細節。
○ 抽象和通用性: 邏輯查詢計劃是相對抽象和通用的,與底層存儲引擎和執行引擎的具體實現無關。
○ 用於優化器: 邏輯查詢計劃是優化器進行查詢優化的基礎。優化器根據邏輯查詢計劃來選擇合適的物理執行計劃。 - 物理查詢計劃(Physical Query Plan):
○ 關註具體執行細節: 物理查詢計劃描述瞭如何在底層存儲引擎上執行查詢的具體細節,包括如何訪問數據、執行連接、過濾和聚合等操作。
○ 與底層存儲引擎相關: 物理查詢計劃是與底層存儲引擎和執行引擎密切相關的,考慮了存儲佈局、索引選擇、並行度等底層執行細節。
○ 用於執行引擎: 物理查詢計劃是執行引擎直接使用的計劃,它指導具體的查詢執行。