PostgreSQL进程结构

彭智勇 发表于:12年05月02日 15:20 [转载] 51CTO

  • 分享:
[导读]从宏观上对PostgreSQL的控制和处理流程进行了简要介绍,说明了各个模块之间是如何协同工作,以使得整个数据库系统能够稳定、正确地处理用户的各种操作和请求的。

PostgreSQL进程结构

PostgreSQL系统的主要功能都集中于Postgres程序,其入口是Main模块中的main函数,在初始化数据集簇、启动数据库服务器时,都将从这里开始执行。Main模块主要的工作是确定当前的操作系统平台,并据此做一些平台相关的环境变量设置和初始化,然后通过对命令行参数的判断,将控制转到相应的模块中去。图2-4是main函数的调用流程。

 
图2-4  PostgreSQL系统主函数main的流程

PostgreSQL使用一种专用服务器进程体系结构,其中,最主要的两个进程就是守护进程Postmaster和服务进程Postgres。从本质上来说,Postmaster和Postgres都是通过载入Postgres程序而形成的进程,只是在运行时所处的分支不同而已。守护进程 Postmaster负责整个系统的启动和关闭。它监听并接受客户端的连接请求,为其分配服务进程Postgres。服务进程Postgres接受并执行客户端发送的命令。它在底层模块(如存储、事务管理、索引等)之上调用各个主要的功能模块(如编译器、优化器、执行器等),完成客户端的各种数据库操作,并返回执行结果。

Postmaster和Postgres程序

在Unix或Linux系列的系统下,Postmaster仅仅是Postgres的一个符号链接;而在Windows系统下,Postmaster是Postgres的一个拷贝。所以PostgreSQL系统几乎所有的核心功能都是由Postgres程序完成的。

PostgreSQL守护进程Postmaster(单用户模式下的Postgres进程)除为用户连接请求分配后台Postgres服务进程外,还将启动相关的后台辅助进程。守护进程Postmaster在完成基本运行环境初始化、创建接受用户请求的监听端口后,顺序启动如下系统辅助进程:SysLogger(系统日志进程)、PgStat(统计数据收集进程)、AutoVacuum(系统自动清理进程)。在守护进程 Postmaster进入到循环监听中时启动如下进程:BgWriter(后台写进程)、WalWriter(预写式日志写进程)、PgArch(预写式日志归档进程)。这些辅助进程的用途在2.5节有详细介绍。

PostgreSQL采用C/S模式,系统为每个客户端分配一个服务进程。前端应用欲访问某一数据库时,就调用接口库(比如ODBC、libpq)把用户的请求通过网络发给守护进程Postmaster。Postmaster将启动一个新的服务进程Postgres为用户服务,此后前端进程和服务进程不再通过Postmaster而是直接进行通信。也就是说,Postmaster总是监听用户连接请求并为用户分配服务进程Postgres,而 Postgres则负责为客户端执行各种命令。

[责任编辑:赵航]
咸师
中国企业信息化从90年代初期开始起步,经过20年的发展,许多企业尤其是大中型企业的IT架构已经搭建完毕。但是,中国企业信息化建设有一个非常显著的特点是,IT系统建设是根据企业各个阶段的需求完成,并没有一个整体的规划。这就导致企业各个IT系统是孤立的,各个系统无法有效地连接起来。
官方微信
weixin
精彩专题更多
存储风云榜”是由DOIT传媒主办的年度大型活动。回顾2014年,存储作为IT系统架构中最基础的元素,已经成为了推动信息产业发展的核心动力,存储产业的发展迈向成熟,数据经济的概念顺势而为的提出。
华为OceanStor V3系列存储系统是面向企业级应用的新一代统一存储产品。在功能、性能、效率、可靠性和易用性上都达到业界领先水平,很好的满足了大型数据库OLTP/OLAP、文件共享、云计算等各种应用下的数据存储需求。
联想携ThinkServer+System+七大行业解决方案惊艳第十六届高交会
 

公司简介 | 媒体优势 | 广告服务 | 客户寄语 | DOIT历程 | 诚聘英才 | 联系我们 | 会员注册 | 订阅中心

Copyright © 2013 DOIT Media, All rights Reserved. 北京楚科信息技术有限公司 版权所有.