上一篇我们介绍了查询规划模块的总体流程和预处理部分的源码。查询规划模块再执行完预处理之后,可以进入正式的查询规划处理流程了。 查询规划的主要工作由grouping_planner函数完成。在具体实现的时候,针对postgresql中独有的继承表,程序使用inheritance_planner函数 ...
上篇博客简要的介绍了下psql命令行客户端的前台代码。这一次,我们来看看后台的代码吧。 十分不好意思的是,上篇博客我们只说明了前台登陆的代码,没有介绍前台登陆过程中,后台是如何工作的。即:后台接到前台的连接请求后发生了什么 调用了哪些函数 启动了哪些进程 那么,我们就先讲讲后台的工作流程吧。 .postgresql后台工作流程 这里首先我们要知道postgresql是典型的 Server Clie ...
2016-11-09 19:50 3 4097 推荐指数:
上一篇我们介绍了查询规划模块的总体流程和预处理部分的源码。查询规划模块再执行完预处理之后,可以进入正式的查询规划处理流程了。 查询规划的主要工作由grouping_planner函数完成。在具体实现的时候,针对postgresql中独有的继承表,程序使用inheritance_planner函数 ...
时间一晃周末就过完了,时间过得太快,不由得让人倍加珍惜。时间真是不够用哈~ 好的不废话,这次我们开始看查询规划模块的源码吧。 查询规划部分的在整个查询处理模块应该是在一个非常重要的地位上,这一步直接决定了查询的方式与路径,很大程度上影响了数据库查询的查询性能。因此这一块代码量也很大,我也会花 ...
上一篇博文我们阅读了postgresql中查询分析模块的源码。查询分析模块对前台送来的命令进行词法分析、语法分析和语义分析后获得对应的查询树(Query)。在获得查询树之后,程序开始对查询树进行查询重写处理。 这一篇文章我们进入查询重写模块源码的阅读。还记得上一篇文章的那张函数调用关系图 ...
。 之前我说过的查询分析,查询重写和查询规划都是相当于是对查询的"编译"。那么编译完了就应该按照既定的策略去 ...
1.数据定义语句的执行 数据定义语句(也就是之前我提到的非可优化语句)是一类用于定义数据模式、函数等的功能性语句。不同于元组增删査改的操作,其处理方式是为每一种类型的描述语句调用相应的处理函数。 ...
接前文跟我一起读postgresql源码(九)——Executor(查询执行模块之——Scan节点(上)) ,本篇把剩下的七个Scan节点结束掉。 8.SubqueryScan 节点 SubqueryScan节点的作用是以另一个査询计划树(子计划)为扫描对象进行元组的扫描,其扫描过程 ...
进公司以来做的都是postgresql相关的东西,每次都是测试、修改边边角角的东西,这样感觉只能留在表面,不能深入了解这个开源数据库的精髓,遂想着看看postgresql的源码,以加深对数据库的理解,也算是好好提高自己。 但是目标很性感,现实很残酷,postgesql的源码都已经百万级 ...
计算机启动流程在我的上一个学习计划《自制操作系统》系列中,已经从完全不知道,过渡到了现在的了如指掌了,虽然有些夸张,但整个大体流程已经像过电影一样在我脑海里了,所以在看 linux 源码的这个 boot 部分时,几乎是看到的地方即使自己写不出,也知道它究竟在做什么,以及下一步可能要做什么,真的特别 ...