IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> postgreSQL源码分析综述 -> 正文阅读

[大数据]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进行调试,从而简化源码的分析。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-09-27 14:09:28  更:2021-09-27 14:12:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 23:19:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码