1. 程式人生 > >4. Optimizer層AST語法樹概述

4. Optimizer層AST語法樹概述

TDDL的optimizer層主要完成三部分的工作:

  1. 將parser分析得到的statement轉化為可以優化的AST語法樹
  2. 對AST語法樹做Cost Based優化
  3. 根據優化後的AST語法樹生成查詢計劃

本篇文件主要介紹第1點中AST語法樹相關的結構。

parser層輸出的結構是SQLStatement介面,能夠通過SQLASTVisitor介面訪問。

optimizer層要做的第一個工作,就是將parser層的SQLStatement資料結構轉換為optimizer層的可優化AST語法樹結構。相關的核心結構如下:

  • CobarSqlAnalysisResult - 是關聯parser層SQLStatement結構和optimizer層ASTNode結構的連線點。它根據SQLStatement的型別建立不同的visitor,生成ASTNode層次結構
  • MySqlSelectVisitor - 訪問DMLSelectStatement內部結構,生成對應的QueryTreeNode結構
  • ASTNode結構 - 包含了查詢的所有原資訊,能通過toDataNodeExecutor()方法生