
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
在Postgres中,显示执行计划可用explain命令,示例如下:我们分析一下源码,看一下 是怎么显示执行计划的,选取了一条简单的查询语句。如果是数据库内核开发者,在新实现某个算子或者新增了某个Plan,这时还需要改一下执行计划显示相关代码,主要在explain.c中。我们分析一下其大概的过程。输入这条语句 进行分析。在进行源码跟踪前想一下,如果自己实现,应该怎么做呢?大概步骤如下:后面我们跟踪

这里,我们分析一下顺序扫描的过程,以最简单的语句为例,分析一下查询的过程。

涉及到的代码主要在以及中。其实,pg_basebackup工具就是对底层API的封装,其主要过程是相同的,但具体到代码,并不是直接调用的函数,而是通过一些命令的形式,这些特殊的命令定义在中,后面我们会进行分析。

这里我们对INSERT语句进行分析, 只分析其宏观过程,具体细节后续再分析。我们就分析下面的语句的执行过程。

定义一个复合类型某种程度上就是定义一张新的表,表的rowtype就是复合类型。会看到创建一个复合类型的同时会创建一个同名的表。这个表可以在pg_class系统表中查到,但是通过\d等却查不到,也不能想表中插入数据,因为它并不是真正意义上的表,只是用表实现复合类型。这部分因为不是可优化语句,没有什么处理。这部分因为是Utility语句,没有什么处理的。创建复合类型,我们分析一下其源码实现。

前面我们分析了故障恢复的情况,这里,我们分析一下PostgreSQL一主一备,备机回放的流程。主备通过流复制协议进行WAL日志同步,主节点生成WAL日志,通过walwriter写入WAL日志段文件进行持久化保存,然后通知walsender进行发送。walsender将WAL日志通过流复制协议发送到备机,备节点通过walreceiver接收WAL日志,写入备机的pg_wal目录下的WAL日志段文件中

这里,我们分析一下索引扫描的过程,以最简单的语句为例,分析一下查询的过程。

pg_archivecleanup用于清理PostgreSQL WAL归档文件。可参考文档:http://www.postgres.cn/docs/14/pgarchivecleanup.html。

本文以为例,分析一下ValueScan其源码执行过程。

这里我们分析一下在PostgreSQL中创建数据库的源码,在分析源码之前,最好先阅读《PostgreSQL指南内幕探索》的第一章,数据库集簇、数据库和数据表,弄清其空间布局,理解PG中,数据库、表、元组是怎么布局的。通俗一点说,创建一个数据库相当于创建一个数据目录,在这个目录下,存放该数据库中定义的表、索引等对象。








