一、Postgres在启动后,可分别以一下四种形式启动进程:
* SubPostmasterMain
* AuxiliaryProcessMain
* PostgresMain
* PostmasterMain
PostmasterMain
1. 设置进程ID
2. 初始化内存池
3. 设置路径、时间等变量
4. 初始化GUC选项,处理输入参数并载入hba和ident
5. 设置共享内存和信号量,初始化共享数据结构
6. 设置信号处理句柄
7. 启动守护进程:
(1) syslogger:收集其他其他进程的日志输出,写入到文件
(2) stats daemon:通过UDP获取各backend的运行时统计信息
(3) autovacuum launcher:定期进行表空间的自动清理
8. 由参数forkboot启动一个backend
9. 绑定到TCP socket,监听连接请求
PostgresMain(--single)
1. 设置进程ID
2. 初始化内存池
3. 设置路径、时间等变量
4. 初始化GUC选项,处理输入参数和其他startup packet中的参数
5. 设置信号处理句柄
6. 初始化一个backend(无论它是否由postmaster生成):ipc, lock, file, storage, buffer
7. 启动XLOG
8. 加载FreeSpaceMap
9. 初始化进程
10. 初始化表缓存和系统目录访问
11. 处理预加载的库
12. 转到MessageContext内存池
13. 进入查询处理主循环
SubPostmasterMain&#x
postgresql中的主要进程
最新推荐文章于 2024-08-29 09:34:53 发布
本文详细介绍了PostgreSQL启动时的四个主要进程:PostmasterMain、SubPostmasterMain、AuxiliaryProcessMain和PostgresMain,包括各自的功能和步骤。此外,还阐述了Catalog的导入过程,涉及目录创建、内存池初始化、backend初始化以及bki文件的解析和执行。
摘要由CSDN通过智能技术生成