3.1.3 掌握PostgreSQL进程结构的主要代码
PostgreSQL同进程相关的主要代码包括:
src/backend/main/main.c:启动入口,确定启动方式,包括:
1) postmaster方式,多进程、交互式方式
2) postgre方式,单进程、交互式方式
3) bootstrap方式,单进程非交互方式、用于初始化数据库
src/backend/postmaster/postmaster.c
1) 主进程,用于监听、接受用户连接请求,然后启动新的进程处理用户请求
2) 新的子进程,则是独立的一个“postgres”进程,在PG系统中,称为“backend”
src/backend/tcop/postgres.c
1) 新的子进程,每一个用户连接,都建立一个新的子进程
2) 这样的进程个数,取决于操作系统能够创建进程的个数限制
3) 采取多进程结构,有利于保持数据库系统的健壮性。PG社区有多多进程还是多线程结构的讨论,但目前多进程结构占主导。未来多进程结合多线程,应是一个方向,多线程能更有效利于硬件的多核资源
src/backend/bootstrap/bootstrap.c
1) 独立的进程,只用于系统初始化
2) 在系统初始化阶段,initdb可执行程序,暗中启动了一个服务器的进程(bootstrap),然后利用管道,想这个进程发送特定的sql语句,使得数据系统的数据被初始建立起来,所以,bootstrap进程,实则是一个数据库引擎(能执行sql语句)进程,只是被用在系统初始化阶段
src/backend/utils/misc/help_config.c
1) 显示一些帮助信息,没有多大实际意义