9.3 9.4 9.5 9.6 10 11 12 13 14 Current(15)
阿里云PostgreSQL 问题报告 纠错本页面

51.2. 连接如何建立

PostgreSQL实现了process per user客户端/服务器模型。 在这个模型中,每个客户端进程 只连接到一个后端进程。 由于我们无法预先知道会有多少连接被建立,我们必须使用一个守护者进程(supervisor process)在每次连接请求时生产一个新的服务器进程。 该守护者进程被称为postmaster,它在一个特定的TCP/IP端口监听进入的连接。 当一个连接请求被监测到时,它会产生一个新的后端进程。 后端进程相互之间,以及与instance中的其他进程之间,通过semaphoresshared memory进行通信,以保证并发数据访问时的数据完整性。

客户端进程可以是任何符合PostgreSQL协议(见第 53 章)的程序。很多客户端基于C语言库libpq,但也有一些该协议的独立实现存在,例如Java的JDBC驱动。

一旦一个连接被建立,客户端进程可以给它连接的后端进程发送一个查询。 查询被以纯文本传送,在客户端不做分析。 后端进程会分析查询,创建一个执行计划,然后执行这个计划,并通过已建立的连接向客户端返回检索到的行。