PostgreSQL 实现了”、“每个用户一个进程”客户端/服务器模型。在此模型中,每个客户端进程都连接到一个后端进程。由于我们事先不知道会有多少连接,因此必须使用一个”、“监督进程”,必须在每次请求连接时产生一个新的后端进程。该监督进程称为邮政管理员,并且监听指定 TCP/IP 端口以获取传入连接。每当它检测到连接请求时,它会产生一个新的后端进程。这些后端进程通过使用信号量和共享内存互相通信以及与实例的其他进程进行通信,以确保在并发数据访问期间数据的完整性。
客户端进程可以是任何理解在第 53 章中描述的PostgreSQL协议的程序。很多客户端都基于 C 语言库libpq,但也有许多协议的独立实现,例如 JavaJDBC驱动程序。
一旦连接建立,客户端进程就可以向其连接到的后端进程发送一个查询。该查询使用明文传输,也就是说,客户端不执行任何解析。后端进程解析查询、创建执行计划、执行计划并将检索到的行通过建立的连接传输回客户端。