技术精讲:PostgreSQL执行计划explain
技术精讲:PostgreSQL执行计划explain入口函数为ExplainOnePlan,他会创建一个查询描述结构queryDesc,然后进入执行器执行ExecutorStart
入口函数为ExplainOnePlan,他会创建一个查询描述结构queryDesc,然后进入执行器执行ExecutorStart、ExecutorRun、ExecutorFinish、ExecutorEnd。当然执行explain时可以添加analyze参数,当添加这个参数时才会执行ExecutorRun即真正执行该查询。
打印执行计划是由函数ExplainPrintPlan完成,该函数调用ExplainNode,由入参PlanState结构传递Plan tree。该PlanState有initPlan(非相关子查询)、lefttree、righttree、subPlan等。遍历计划树就是对这几个节点链进行递归遍历。可以看到,他打印完本节点信息后,若有左右子树则递归进行ExplainNode,然后对特殊节点进行特殊处理,使用ExplainMemberNodes、ExplainNode和ExplainCustomChildren函数进行处理。最后若有子计划则递归遍历subPlan。
详细打印信息可通过上面图的流程框架进入每个函数深入阅读理解。
GreenPlum的GPCC可以动态以树的形式打印执行计划,显示执行计划执行的进度。理解explain如何打印执行计划及这些节点怎么遍历后,可以更加方便理解推测GPCC打印执行计划的机制(因为gpcc还未开源)。
同时执行计划的执行时间从什么时候开始,到什么时候结束,也可以通过函数ExplainOnePlan看INSTR_TIME_SET_CURRENT(starttime);类似的时间。
上一篇:家装市场能撑起国美逆袭的野心吗?
-
2021“上海科技青年35人引领计划昨晚举行颁奖典礼”BITO CEO龚超慧荣耀入选,张文宏等大咖前来交流分享2021-04-30
-
持续改进,“郊狼”巡飞弹已成为未来美军的计划基线2021-04-29
-
华为邓泰华:鲲鹏、昇腾“优才、众智“计划正式启动2021-04-28
-
OPPO推出小布助手AI升温计划1.0版,以科技回应用户情感需求2021-04-27
-
哈啰出行递交招股书,计划纳斯达克挂牌!2021-04-26
-
百度“集度汽车”计划未来五年投资500亿元造车2021-04-25
-
传特斯拉柏林工厂或不会按计划在7月投产!2021-04-23
-
「未来机器人」获IDG资本领投近亿元B2轮融资, 引领物流节点柔性无人化变革2021-04-22
-
分析师:苹果或在未来3-6个月内公布造车计划2021-04-21
-
戴森宣布全球投资计划,深入研究软件、先进机器人技术和人工智能等领域2021-04-15
-
全球芯片供应短缺,福特宣布最新减产计划!2021-04-15
-
芯片短缺,雷诺计划延长西班牙工厂减产至9月底!2021-04-14
-
RealAI参与中国信通院“护脸”计划 共筑人脸应用健康生态2021-04-12
-
如何用Python引用一些其他的函数?2021-04-08
-
维科早报:美国提2500亿美元科研投资计划2021-04-06