logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

PostgreSQL源码分析——执行计划EXPLAIN

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

文章图片
#数据库#postgresql
PostgreSQL源码分析——SeqScan

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

文章图片
#postgresql#数据库
PostgreSQL源码分析——pg_basebackup

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

文章图片
#postgresql#数据库
PostgreSQL源码分析——INSERT

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

文章图片
#postgresql#数据库
PostgreSQL源码分析——CREATE TYPE

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

文章图片
#postgresql#数据库
PostgreSQL源码分析——备机回放

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

文章图片
#postgresql#数据库
PostgreSQL源码分析——索引扫描

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

文章图片
#postgresql#数据库
PostgreSQL源码分析——pg_archivecleanup

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

文章图片
#postgresql#数据库
PostgreSQL源码分析—— ValueScan

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

文章图片
#postgresql#数据库
PostgreSQL源码分析——CREATE DATABASE

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

文章图片
#数据库#postgresql
    共 26 条
  • 1
  • 2
  • 3
  • 请选择