2021SC@SDUSC
目录
分工情况
所以我们组将核心源码的分析工作分成两部分,一部分负责postmaster,也就是守护进程;另一部分负责postgres,也就是服务进程。
我负责的部分
我和另一名组员负责postmaster部分。postmaster对于postgresql来说就像一个总控制台,一旦开启一个数据库实例(pg_ctl start),postmaster进程就开始运行。它的主要功能如下:
- 负责整个系统的启动和关闭。
- 在服务进程出现错误时完成系统的恢复。
- 管理数据库文件。
- 监听并接收来自客户端的连接请求,并为客户端fork一个postgres服务进程,代替客户端在数据库上执行各种命令。
- 管理与数据库运行相关的辅助进程。
从功能上看,postmaster的作用是非常核心的,它对整个DBMS系统的正常运行至关重要。我们分析的重点会放在一些核心的指令,数据库文件的管理、部分辅助进程上。
主要源码
- backend文件夹就是存放postmaster和postgres相关源码的文件夹。
- bin文件夹存放的是实现UNIX指令的源码。
- interfaces文件夹存放的是前端和后端实现通信的源码。
而backend文件夹里也有很多文件夹,我可能会分析到的有 - postmaster文件夹,包含postmaster源码以及各种辅助进程的源码;
- libpq文件夹,包含前后端通信的源码;
- storage文件夹,涉及到共享内存的实现、磁盘上的存储、缓存以及记录等源码。
经过初步了解,将代码的分析范围划定到了这几个文件夹里,还无法定位到具体的代码文件,这需要以后的分析里,通过函数以及文件的调用,逐个定位具体文件,具体的代码。
分析方式
由于postmaster所处理的异常情况不太容易出现,因此大部分源码的分析都只能依靠直接阅读。部分方便调试的会使用gdb进行调试,从而简化源码的分析。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。