多进程与多线程(十四)

本文介绍了PostgreSQL数据库的进程结构及关键代码实现。主要包括启动入口main.c、主进程postmaster.c、子进程postgres.c以及系统初始化进程bootstrap.c。探讨了多进程结构的优势,并对未来可能的多进程与多线程结合的发展趋势进行了展望。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)        显示一些帮助信息,没有多大实际意义


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值