4. Optimizer層AST語法樹概述
阿新 • • 發佈:2019-07-27
TDDL的optimizer層主要完成三部分的工作:
- 將parser分析得到的statement轉化為可以優化的AST語法樹
- 對AST語法樹做Cost Based優化
- 根據優化後的AST語法樹生成查詢計劃
本篇文件主要介紹第1點中AST語法樹相關的結構。
parser層輸出的結構是SQLStatement介面,能夠通過SQLASTVisitor介面訪問。
optimizer層要做的第一個工作,就是將parser層的SQLStatement資料結構轉換為optimizer層的可優化AST語法樹結構。相關的核心結構如下:
- CobarSqlAnalysisResult - 是關聯parser層SQLStatement結構和optimizer層ASTNode結構的連線點。它根據SQLStatement的型別建立不同的visitor,生成ASTNode層次結構
- MySqlSelectVisitor - 訪問DMLSelectStatement內部結構,生成對應的QueryTreeNode結構
- ASTNode結構 - 包含了查詢的所有原資訊,能通過toDataNodeExecutor()方法生