技術精講:PostgreSQL執(zhí)行計劃explain
入口函數(shù)為ExplainOnePlan,他會創(chuàng)建一個查詢描述結構queryDesc,然后進入執(zhí)行器執(zhí)行ExecutorStart、ExecutorRun、ExecutorFinish、ExecutorEnd。當然執(zhí)行explain時可以添加analyze參數(shù),當添加這個參數(shù)時才會執(zhí)行ExecutorRun即真正執(zhí)行該查詢。
打印執(zhí)行計劃是由函數(shù)ExplainPrintPlan完成,該函數(shù)調用ExplainNode,由入?yún)lanState結構傳遞Plan tree。該PlanState有initPlan(非相關子查詢)、lefttree、righttree、subPlan等。遍歷計劃樹就是對這幾個節(jié)點鏈進行遞歸遍歷?梢钥吹剑蛴⊥瓯竟(jié)點信息后,若有左右子樹則遞歸進行ExplainNode,然后對特殊節(jié)點進行特殊處理,使用ExplainMemberNodes、ExplainNode和ExplainCustomChildren函數(shù)進行處理。最后若有子計劃則遞歸遍歷subPlan。
詳細打印信息可通過上面圖的流程框架進入每個函數(shù)深入閱讀理解。
GreenPlum的GPCC可以動態(tài)以樹的形式打印執(zhí)行計劃,顯示執(zhí)行計劃執(zhí)行的進度。理解explain如何打印執(zhí)行計劃及這些節(jié)點怎么遍歷后,可以更加方便理解推測GPCC打印執(zhí)行計劃的機制(因為gpcc還未開源)。
同時執(zhí)行計劃的執(zhí)行時間從什么時候開始,到什么時候結束,也可以通過函數(shù)ExplainOnePlan看INSTR_TIME_SET_CURRENT(starttime);類似的時間。

最新活動更多
推薦專題
- 1 UALink規(guī)范發(fā)布:挑戰(zhàn)英偉達AI統(tǒng)治的開始
- 2 北電數(shù)智主辦酒仙橋論壇,探索AI產(chǎn)業(yè)發(fā)展新路徑
- 3 “AI寒武紀”爆發(fā)至今,五類新物種登上歷史舞臺
- 4 降薪、加班、裁員三重暴擊,“AI四小龍”已折戟兩家
- 5 國產(chǎn)智駕迎戰(zhàn)特斯拉FSD,AI含量差幾何?
- 6 光計算迎來商業(yè)化突破,但落地仍需時間
- 7 東陽光:2024年扭虧、一季度凈利大增,液冷疊加具身智能打開成長空間
- 8 地平線自動駕駛方案解讀
- 9 封殺AI“照騙”,“淘寶們”終于不忍了?
- 10 優(yōu)必選:營收大增主靠小件,虧損繼續(xù)又逢關稅,能否乘機器人東風翻身?