时间:2023-03-16 09:52:25
作者:admin
来源:
阅读次数:13
pgsql把客户端称为前端,把服务端称为后端。前端通过调用libpq来与后端通信。 后端由多个进程组成,前端发送网络数据报文(查询请求)到后端,后端解析请求后回复相应的报文。
postgres主进程(postmaster)
管理后端的常驻进程,也称为’postmaster’。 其默认监听UNIX Domain Socket和TCP/IP(Windows等,一部分的平台只监听tcp/ip)的5432端口,等待来自前端的的连接处理。 监听的端口号可以在PostgreSQL的设置文件postgresql.conf里面可以改。
当有前端连接过来的时候,postmaster会fork一个子进程来处理前端的连接请求。并通过共享内存进行进程间通信。
postgres子进程
子进程根据pg_hba.conf定义的安全策略来判断是否允许进行连接,根据策略,会拒绝某些特定的IP及网络,或者也可以只允许某些特定的用户或者对某些数据库进行连接。
辅助进程
writer process
WAL wriiter process
archive process
stats collector process
logger process
autovacuum
wal sender/wal receiver
mainPostmasterMainSysLogger_Startfork_processInitPostmasterChildSysLoggerMainmaybe_start_bgworkersServerLoopStartAutoVacLauncherMaybeStartWalReceiverStartCheckpointerStartBackgroundWriter
接收前端发送过来的请求报文
parse模块进行文本解析,得到查询树
analyze模块进行分析处理
通过查询语句的重写实现视图和规则
查询优化,优化查询树
executor执行处理
返回执行结果给前端
重复步骤1-7
0755-82665685 (8:30-18:30)
290784928@qq.com
深圳市罗湖区
Copyright ©2008-2023 深圳市互讯通科技有限公司 粤ICP备08112939号