选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0
历史版本PostgreSQL 9.5 已于 2021 年 2 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本

48.2. 连接是如何建立的 #

PostgreSQL 使用一种简单的每用户一个进程客户端/服务器模型。在这种模型中,一个客户端进程恰好连接到一个服务器进程。由于事先不知道会建立多少个连接,因此必须使用一个主进程,在每次收到连接请求时派生一个新的服务器进程。这个主进程称为 postgres,在指定的 TCP/IP 端口上监听传入连接。每当检测到连接请求时,postgres 进程就会派生一个新的服务器进程。服务器任务之间使用信号量共享内存通信,以确保并发数据访问期间的数据完整性。

客户端进程可以是任何理解 PostgreSQL 协议(见 第 50 章)的程序。很多客户端基于 C 语言库 libpq,但该协议也有若干独立实现,例如 Java 的 JDBC 驱动。

一旦连接建立起来,客户端进程就可以向后端(服务器)发送查询。查询以纯文本方式传输,也就是说,前端(客户端)不进行解析。服务器解析查询,创建一个执行计划,执行该计划,并通过已建立的连接把检索到的行返回给客户端。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。