pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
在继续之前,你应该先了解 Postgres 的基本 体系结构。理解 Postgres 各部分之间如何交互, 会让下一章的内容更加清晰。 用数据库行话来说,Postgres 使用一种简单的 “每用户一个进程”客户端/服务器模型。一个 Postgres 会话由下列相互协作的 UNIX 进程(程序)组成:
一个监督守护进程(postmaster),
用户的前端应用程序(例如 psql 程序),以及
一个或多个后端数据库服务器(postgres 进程本身)。
单个 postmaster 管理同一台主机上给定的一组 数据库。这样一组数据库称为一个安装(installation)或站点(site)。 希望访问某个安装中特定数据库的前端应用程序调用相应的库。 该库把用户请求通过网络发送给 postmaster(连接是如何建立的(a)),后者再启动一个新的 后端服务器进程(连接是如何建立的(b))
图 49.1. 连接是如何建立的

并把前端进程连接到这个新的服务器(连接是如何建立的(c))。 从那一刻起,前端进程与后端服务器之间的通信不再经过 postmaster 干预。因此,postmaster 始终在运行并等待请求, 而前端和后端进程则随需生灭。libpq 库允许单个 前端与多个后端进程建立多条连接。 但是,前端应用程序仍然是单线程进程。libpq 目前 不支持多线程的前端/后端连接。 这种体系结构的一个含义是:postmaster 和后端 总是运行在同一台机器(数据库服务器)上,而前端应用程序可以运行在 任何地方。你应当牢记这一点, 因为在客户端机器上可以访问的文件,在数据库服务器机器上可能无法访问 (或者只能用不同的文件名访问)。 你还应当知道,postmaster 和 postgres 服务器以 Postgres “超级用户”的用户 id 运行。注意,Postgres 超级用户并不需要 是一个特殊的用户(例如名为 “postgres” 的用户)。而且, Postgres 超级用户绝对 不应该是 UNIX 超级用户 “root”!无论如何,与某个数据库相关的所有文件 都应当属于这个 Postgres 超级用户。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。