postgreSQL源码分析综述

2021/9/27 2:11:24

本文主要是介绍postgreSQL源码分析综述,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

2021SC@SDUSC

目录

    • 分工情况
    • 我负责的部分
    • 主要源码
    • 分析方式

分工情况

pg的核心架构
由官方的文档,可以知道postgreSQL的主要架构和上面的图片描述的一样。
所以我们组将核心源码的分析工作分成两部分,一部分负责postmaster,也就是守护进程;另一部分负责postgres,也就是服务进程。

我负责的部分

我和另一名组员负责postmaster部分。postmaster对于postgresql来说就像一个总控制台,一旦开启一个数据库实例(pg_ctl start),postmaster进程就开始运行。它的主要功能如下:

  • 负责整个系统的启动和关闭。
  • 在服务进程出现错误时完成系统的恢复。
  • 管理数据库文件。
  • 监听并接收来自客户端的连接请求,并为客户端fork一个postgres服务进程,代替客户端在数据库上执行各种命令。
  • 管理与数据库运行相关的辅助进程。
    1. writer process 在适当的时间点把共享内存上的缓存写往磁盘。
    2. WAL writer process 把共享内存上的WAL缓存在适当的时间点往磁盘写。
    3. Archive process 把WAL日志转移到归档日志里。
    4. stats collector process 统计信息的收集进程。
    5. Logger process 把postgresql的活动状态写到日志信息文件(并非事务日志),在指定的时间间隔里面,对日志文件进行rotate。
    6. autovacuum launcher process是依赖于postmaster间接启动vacuum进程。从而实现自动回收空间和统计信息。

从功能上看,postmaster的作用是非常核心的,它对整个DBMS系统的正常运行至关重要。我们分析的重点会放在一些核心的指令,数据库文件的管理、部分辅助进程上。

主要源码

在这里插入图片描述
我们要分析的主要源码集中在src文件夹(存放源码的文件夹)中的这三个文件夹中。

  • backend文件夹就是存放postmaster和postgres相关源码的文件夹。
  • bin文件夹存放的是实现UNIX指令的源码。
  • interfaces文件夹存放的是前端和后端实现通信的源码。
    在这里插入图片描述
    而backend文件夹里也有很多文件夹,我可能会分析到的有
  • postmaster文件夹,包含postmaster源码以及各种辅助进程的源码;
  • libpq文件夹,包含前后端通信的源码;
  • storage文件夹,涉及到共享内存的实现、磁盘上的存储、缓存以及记录等源码。

经过初步了解,将代码的分析范围划定到了这几个文件夹里,还无法定位到具体的代码文件,这需要以后的分析里,通过函数以及文件的调用,逐个定位具体文件,具体的代码。

分析方式

由于postmaster所处理的异常情况不太容易出现,因此大部分源码的分析都只能依靠直接阅读。部分方便调试的会使用gdb进行调试,从而简化源码的分析。



这篇关于postgreSQL源码分析综述的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程