本篇内容介绍了“PostgreSQL中create_plan函数连接计划的实现过程是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Plan
所有计划节点通过将Plan结构作为第一个字段从Plan结构“派生”。这确保了在将节点转换为计划节点时能正常工作。(在执行器中免费云主机域名以通用方式传递时,节点指针经常被转换为Plan *)create_join_plan函数创建Join Plan节点.Join可以分为Merge Join/Hash Join/NestLoop Join三种,相应的实现函数是create_nestloop_plan/create_mergejoin_plan/create_hashjoin_plan.测试脚本如下启动gdb,设置断点,进入create_join_plan函数查看输入参数,pathtype为T_NestLoop进入create_nestloop_plannestloop join->创建tlist,获取连接条件等nestloop join->调用create_plan_recurse创建outer_plannestloop join->外表对应的outer_plan为T_HashJoinnestloop join->进入create_hashjoin_planhash join->创建outer planhash join->创建inner planhash join->获取连接条件hash join->处理连接条件&hash条件hash join->变换位置,把外表的Var放在左侧hash join->Hash连接条件只有一个,进行数据倾斜优化hash join->开始创建创建hash节点和hash join节点
创建hash节点(构建Hash表)hash join->创建hash join节点hash join->回到create_nestloop_plannestloop join->创建内表Plannestloop join->获取连接条件子句nestloop join->获取连接条件&参数化处理(相关值为NULL)nestloop join->获取外表的relids(外表为1和3号RTE的连接)nestloop join->遍历当前的外表参数链表nestloop join->查看该参数信息,3号RTE编号为2的字段(即grbh)nestloop join->把条件从root->curOuterParams移动到nestParams链表中nestloop join->创建nestloop join节点“PostgreSQL中create_plan函数连接计划的实现过程是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注百云网站,小编将为大家输出更多高质量的实用文章!
相关推荐: Oracle Database 12cR2多租户权威指南
Anton Els,Vt pinka,Franck Pachot Oracle Database 12c Release 2 Multitenant EISBN 978-1-25-983609-1 Copyright 2017 by McGraw-Hill E…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。