摘要:
我们公司基于postgres开发了一款数据库产品,不用说我们对OSS的源码做了改动,并且也集成和自己编写了一些插件。因此,当postgresql和相关插件升级时,我们也需要将升级反应到自己的产品中去,这是背景。 这次的问题是在我们升级postgresql的插件orafce(3.2.0 3.6.0)时 阅读全文
摘要:
3.HashJoin 节点 Hashjoin节点实现了Hash连接算法,它能够实现前面说到的六种连接方式。 以下我们以表R(左关系)与表S(右关系)连接为例,说明Hash连接的实现过程。 1)对一个表(例如S)进行Hash时,其块和桶数量的确定和划分方法如下: ①首先对S分块(batch),估算存储 阅读全文
摘要:
Join节点 JOIN节点有以下三种: 连接类型节点对应于关系代数中的连接操作,PostgreSQL中定义了如下几种 连接类型 (以T1 JOIN T2 为例): 1)Inner Join:内连接,将T1的所有元组与T2中所有满足连接条件的元组进行连接操作。 2)Left Outer Join:左连 阅读全文
摘要:
接前文,我们继续说剩下的4个Materialization节点。 7.SetOp节点 SetOp节点用于处理集合操作,对应于SQL语句中的EXCEPT、INTERSECT两种集合操作,至于另一种集合操作UNION,可直接由Append节点来实现。 一个SetOp节点只能处理一个集合操作(由两个集合参 阅读全文
摘要:
物化节点 顾名思义,物化节点是一类可缓存元组的节点。在执行过程中,很多扩展的物理操作符需要首先获取所有的元组后才能进行操作(例如聚集函数操作、没有索引辅助的排序等),这时要用物化节点将元组缓存起来。下面列出了PostgreSQL中提供的物化节点。 1.Material节点 先上例子: 这里的子查询“ 阅读全文
摘要:
接前文 "跟我一起读postgresql源码(九)——Executor(查询执行模块之——Scan节点(上))" ,本篇把剩下的七个Scan节点结束掉。 8.SubqueryScan 节点 SubqueryScan节点的作用是以另一个査询计划树(子计划)为扫描对象进行元组的扫描,其扫描过程最终被转换 阅读全文
摘要:
从前面介绍的可优化语句处理相关的背景知识、实现思想和执行流程,不难发现可优化语句执行的核心内容是对于各种计划节点的处理,由于使用了节点表示、递归调用、统一接口等设计,计划节点的功能相对独立、代码总体流程相似,下面介绍执行器中各种计划节点的相关执行过程。 在PostgreSQL中,计划节点分为四类,分 阅读全文
摘要:
2.可优化语句的执行 可优化语句的共同特点是它们被查询编译器处理后都会生成査询计划树,这一类语句由执行器(Executor)处理。该模块对外提供了三个接口: ExecutorStart、ExecutorRun 和 ExecutorEnd,其输入是包含査询计划树的数据结构QueryDesc,输出则是相 阅读全文
摘要:
1.数据定义语句的执行 数据定义语句(也就是之前我提到的 非可优化语句 )是一类用于定义数据模式、函数等的功能性语句。不同于元组增删査改的操作,其处理方式是为每一种类型的描述语句调用相应的处理函数。 数据定义语句的执行流程最终会进入到ProcessUtility处理器,然后执行语句对应的不同处理过程 阅读全文
摘要:
fdisk Partition table manipulator for Linux 一.通过fdisk l 查看机器所挂硬盘个数及分区情况; fdisk 能划分磁盘成为若干个区,同时也能为每个分区指定分区的文件系统,比如linux,fat32,linux swap,fat16以及其实类Unix类 阅读全文