摘要: 在 PostgreSQL中,每一个进程都有属于自己的共享缓存(shared cache)。例如,同一个系统表在不同的进程中都有对应的Cache来缓存它的元组(对于RelCache来说缓存的是一个RelationData结构)。同一个系统表的元组可能同时被多个进程的Cache所缓存,当其中某个Cach阅读全文
posted @ 2018-06-05 15:31 非我在 阅读(172) 评论(3) 编辑
摘要: 本文源于最近修正的一个关于psqlodbc的bug,该bug在近期的psqlodbc的git上也有人提交了修正。 关于该bug的修正代码可以看这里: "https://git.postgresql.org/gitweb/?p=psqlodbc.git;a=commit;h=85f6fade3" 说道阅读全文
posted @ 2018-04-23 22:04 非我在 阅读(43) 评论(0) 编辑
摘要: 今天我们对postmaster的以下细节进行讨论: 2.与前端的交互 2.1backend的启动和client的连接请求的认证 关于backend的启动,其函数调用栈如下: typedef struct bkend { pid_t pid; / process id of backend / lon阅读全文
posted @ 2018-04-23 08:06 非我在 阅读(164) 评论(0) 编辑
摘要: 之前我的一些文章都是在说Postgres的一些查询相关的代码。但是对于Postgres服务端是如何启动,后台进程是如何加载,服务端在哪里以及如何监听客户端的连接都没有一个清晰的逻辑。那么今天我来说说Postgres中的 postmaster 模块的代码,试着解答这些问题。 在正式讨论之前,我先说一下阅读全文
posted @ 2018-04-09 09:08 非我在 阅读(283) 评论(1) 编辑
摘要: 回滚 n 个 commit (增加了revert commit) git revert n commit_id 回滚到指定的commit_id(不增加commit,回滚的commit_id被删除) git reset hard commit_id 回到commit_id处,在这里可以修改在这个com阅读全文
posted @ 2018-03-23 21:23 非我在 阅读(31) 评论(0) 编辑
摘要: 5.ModifyTable节点 先看一个ModifyTable节点的例子: 你可能疑惑为啥上面的查询计划里面没有"ModifyTable"这样的字眼,下面是explain.c文件中的一段: 由此我们可以看到,对于ModifyTable节点,explain会判断是增删改中的哪一种从而作出判断。所以当在阅读全文
posted @ 2018-02-08 16:42 非我在 阅读(175) 评论(0) 编辑
摘要: 控制节点 控制节点用于完成一些特殊的流程执行方式。由于PostgreSQL为査询语句生成二叉树状的査询计划,其中大部分节点的执行过程需要两个以内的输入和一个输出。但有一些特殊的功能为了优化的需要,会含有特殊的执行方式和输人需求(例如对于update、INSERT和DELETE,在普通的SELECT基阅读全文
posted @ 2018-02-05 16:40 非我在 阅读(228) 评论(1) 编辑
摘要: 我们公司基于postgres开发了一款数据库产品,不用说我们对OSS的源码做了改动,并且也集成和自己编写了一些插件。因此,当postgresql和相关插件升级时,我们也需要将升级反应到自己的产品中去,这是背景。 这次的问题是在我们升级postgresql的插件orafce(3.2.0 3.6.0)时阅读全文
posted @ 2018-01-30 23:01 非我在 阅读(163) 评论(0) 编辑
摘要: 3.HashJoin 节点 Hashjoin节点实现了Hash连接算法,它能够实现前面说到的六种连接方式。 以下我们以表R(左关系)与表S(右关系)连接为例,说明Hash连接的实现过程。 1)对一个表(例如S)进行Hash时,其块和桶数量的确定和划分方法如下: ①首先对S分块(batch),估算存储阅读全文
posted @ 2018-01-29 17:43 非我在 阅读(193) 评论(1) 编辑
摘要: Join节点 JOIN节点有以下三种: 连接类型节点对应于关系代数中的连接操作,PostgreSQL中定义了如下几种 连接类型 (以T1 JOIN T2 为例): 1)Inner Join:内连接,将T1的所有元组与T2中所有满足连接条件的元组进行连接操作。 2)Left Outer Join:左连阅读全文
posted @ 2018-01-25 21:54 非我在 阅读(171) 评论(0) 编辑