1 SQL執行流程
- ?查詢解析:詞法分析、語法分析、 語義分析
- ?查詢重寫:視圖和規則展開、基于規則的查詢優化
- ?計劃生成:路徑搜索和枚舉、選出最優執行計劃
- ?查詢執行:基于優化器生成的物理執行計劃對數據進行獲取和計算
2?解析器和優化器
?SQL是一種聲明式語言,只需要指定想要達到的目的,即What,而不需要指定怎樣達到這個目的,即How 。
解析器:處理"What"的定義, 根據語法規則和元數據將SQL語句編譯成為一個由關系算子組成的邏輯執行計劃。
優化器:處理"How",即"What"的解法,通過基于關系代數的等價變換、物理計劃的枚舉和基于統計信息的代價評估來選擇最優的物理執行計劃。
3?執行器
1)迭代器模式(火山模型)
執行以算子迭代的方式驅動執行,
可將算子抽象為init() ,get_next (), end()三種類型操作。
上層算子通過嵌套調用下層算子的get_next ()處理返回數據。
初始化和結束操作也通 ? 過init()和end()嵌套調用。
初始化:迭代遍歷整個PlanTree,對每個算子進行初始化操作。
執行:當前算子處理下層算子返回值,處理后返回給上層算子。
結束:迭代遍歷整個PlanTree,清理對 應算子內的資源。
4 批注
掌握GaussDB的SQL引擎的工作及原理