摘要: 接前文 "跟我一起读postgresql源码(九)——Executor(查询执行模块之——Scan节点(上))" ,本篇把剩下的七个Scan节点结束掉。 8.SubqueryScan 节点 SubqueryScan节点的作用是以另一个査询计划树(子计划)为扫描对象进行元组的扫描,其扫描过程最终被转换阅读全文
posted @ 2018-01-16 16:31 非我在 阅读(78) 评论(1) 编辑
摘要: 从前面介绍的可优化语句处理相关的背景知识、实现思想和执行流程,不难发现可优化语句执行的核心内容是对于各种计划节点的处理,由于使用了节点表示、递归调用、统一接口等设计,计划节点的功能相对独立、代码总体流程相似,下面介绍执行器中各种计划节点的相关执行过程。 在PostgreSQL中,计划节点分为四类,分阅读全文
posted @ 2018-01-13 11:40 非我在 阅读(102) 评论(0) 编辑
摘要: 2.可优化语句的执行 可优化语句的共同特点是它们被查询编译器处理后都会生成査询计划树,这一类语句由执行器(Executor)处理。该模块对外提供了三个接口: ExecutorStart、ExecutorRun 和 ExecutorEnd,其输入是包含査询计划树的数据结构QueryDesc,输出则是相阅读全文
posted @ 2018-01-08 12:53 非我在 阅读(174) 评论(0) 编辑
摘要: 1.数据定义语句的执行 数据定义语句(也就是之前我提到的 非可优化语句 )是一类用于定义数据模式、函数等的功能性语句。不同于元组增删査改的操作,其处理方式是为每一种类型的描述语句调用相应的处理函数。 数据定义语句的执行流程最终会进入到ProcessUtility处理器,然后执行语句对应的不同处理过程阅读全文
posted @ 2018-01-04 13:33 非我在 阅读(206) 评论(0) 编辑
摘要: fdisk Partition table manipulator for Linux 一.通过fdisk l 查看机器所挂硬盘个数及分区情况; fdisk 能划分磁盘成为若干个区,同时也能为每个分区指定分区的文件系统,比如linux,fat32,linux swap,fat16以及其实类Unix类阅读全文
posted @ 2017-12-27 22:36 非我在 阅读(24) 评论(0) 编辑
摘要: pg_basebackup命令首先解析输入的参数,再调用BaseBackup()函数进行备份处理。 在BaseBackup()函数内部,会首先传送WAL日志(如果指定了 x选项的话)。随后依次遍历所有的tablespace复制备份整个数据库的文件。根据pg_basebackup命令的 F选项的指定情阅读全文
posted @ 2017-12-27 21:57 非我在 阅读(8) 评论(0) 编辑
摘要: 顾名思义,物化节点是一类可缓存元组的节点。在执行过程中,很多扩展的物理操作符需要首先获取所有的元组后才能进行操作(例如聚集函数操作、没有索引辅助的排序等),这时要用物化节点将元组缓存起来。下面列出了PostgreSQL中提供的物化节点。 物化节点概述 物化节点需要有元组的缓存结构,以加快执行效率或实阅读全文
posted @ 2017-12-27 21:06 非我在 阅读(141) 评论(0) 编辑
摘要: 表的模式信息存放在系统表中,因此要访问表,就需要首先在系统表中取得表的模式信息。对于一个PostgreSQL系统来说,对于系统表和普通表模式的访问是非常频繁的。为了提高这些访问的效率,PostgreSQL设立了高速缓存(Cache)来提高访问效率。 Cache中包括一个 系统表元组Cache(Sys阅读全文
posted @ 2017-12-19 22:06 非我在 阅读(309) 评论(0) 编辑
摘要: Postgresql作为C语言开发的代码,其中大量的运用了一些宏的操作。 因此理解这些宏很重要,然而有时候这些宏总让人很费解。 作为一个经常翻翻postgresql源码的小白,在这里做一个记录吧,方便自己查看。 1. \ define offsetof(type, field) ((long) &(阅读全文
posted @ 2017-12-15 15:27 非我在 阅读(45) 评论(0) 编辑
摘要: PostgreSQL为每个收到的查询设计一个查询规划。选择正确的匹配查询结构和数据属性的规划对执行效率是至关重要要的,所以系统包含一个复杂的规划器来试图选择好的规划。你可以使用EXPLAIN命令查看查询规划器创建的任何查询。阅读查询规划是一门艺术,需要掌握一定的经验,本节试图涵盖一些基础知识。 以下阅读全文
posted @ 2017-12-14 21:40 非我在 阅读(144) 评论(1) 编辑