PostgreSQL 中文参考文档
🌐 英文原版 官方 ↗

51.2. 连接如何建立 #

PostgreSQL 采用经典的“每个用户独立进程”(Process per user)客户端/服务端架构模型。在该模型下,每个独立的客户端进程与专属于它的唯一后台进程(Backend Process)建立专用通信通道。

由于事先无法预知接入系统的并发连接总数,系统使用一个常驻的“主管进程”:postmaster。主进程监听指定的 TCP/IP 端口及 Unix 域套接字。每当检测到新的连接握手请求时,postmaster 立即通过 fork 派生出一个全新的专属后台工作进程。这些独立的后台进程在运行期间通过操作系统信号量(Semaphores)以及共享内存(Shared Memory)相互通信,确保并发访问数据时的内存强一致性与并发锁隔离。

客户端进程可以是任何理解 Chapter 54 中所述的 PostgreSQL 协议格式的应用程序。多数客户端基于 C 语言官方函数库 libpq 构建,此外也存在诸如 Java JDBC、Go 等直接实现底层网络协议的独立驱动程序。

连接顺利建立后,客户端通过建立的套接字向其专属后台进程发送纯文本 SQL 查询。后台进程负责全权执行解析、制定计划并执行,最后将数据行结果集序列化后传回客户端。