50.2. 如何构建连接

PostgreSQL 是使用简单的“每个用户的进程”Client 端/服务器模型实现的。在此模型中,只有一个Client 进程连接到一个服务器进程。由于我们无法提前知道将构建多少个连接,因此我们必须使用“主进程”,该主进程在每次请求连接时都会生成一个新的服务器进程。该主进程称为postgres,它在指定的 TCP/IP 端口上侦听传入的连接。每当检测到连接请求时,postgres进程就会生成一个新的服务器进程。服务器任务使用signal 量共享内存相互通信,以确保整个并发数据访问期间的数据完整性。

Client 端进程可以是理解Chapter 52中描述的 PostgreSQL 协议的任何程序。许多 Client 端基于 C 语言库 libpq,但是该协议存在几种独立的实现,例如 Java JDBC 驱动程序。

构建连接后,Client 端进程可以将查询发送到* backend (服务器)。查询是使用纯文本传输的,即在 frontend *(Client 端)中没有进行解析。服务器解析查询,创建一个“执行计划”,执行该计划,并通过在已构建的连接上传输检索到的行,将其返回给 Client 端。