openGauss內(nèi)核計劃分析(六):執(zhí)行生成
SQL語句解析完成后被解析成Query結(jié)構(gòu),在進行優(yōu)化時是以Query為單位進行的,Query的優(yōu)化分為基于規(guī)則的邏輯優(yōu)化(查詢重寫)和基于代價的物理優(yōu)化(計劃生成),主入口函數(shù)為subquery_planner。subquery_planner函數(shù)接收Query(查詢樹),返回一個Plan(計劃樹)。
subquery_planner函數(shù)由函數(shù)standard_planner調(diào)用,standard_planner函數(shù)由exec_simple_query->pg_plan_queries->pg_plan_query->planner函數(shù)調(diào)用。standard_planner將Query(查詢樹)生成規(guī)劃好的語句,可用于執(zhí)行器實際執(zhí)行。
仍然以前文的join列子來說明
在planner函數(shù)打斷點,用gdb查看standard_planner返回的PlannedStmt
將Query規(guī)劃后得到PlannedStmt


可以看到,Plannedstmt 和explain 執(zhí)行計劃是一致的:

標簽: