PostgreSQL 采用 “每个用户一个进程” 的客户端/服务器模型。在此模型中,每个 客户端进程 只连接到一个 后端进程。由于我们事先不知道会有多少连接,因此必须使用一个 “监视进程”,在每次请求连接时生成一个新的后端进程。这个监视进程称为 postmaster,它在指定的 TCP/IP 端口监听传入的连接。每当检测到连接请求时,它就会生成一个新的后端进程。这些后端进程通过 信号量 和 共享内存 与彼此以及与 实例 的其他进程进行通信,以确保在并发数据访问期间数据的完整性。
客户端进程可以是任何理解 第 54 章 中描述的 PostgreSQL 协议的程序。许多客户端都基于 C 语言库 libpq,但协议存在多种独立的实现,例如 Java JDBC 驱动程序。
一旦建立连接,客户端进程就可以向其连接的后端进程发送查询。查询以纯文本形式传输,即客户端不进行解析。后端进程解析查询,创建一个 执行计划,执行该计划,然后通过已建立的连接将检索到的行传输回客户端。
如果您在文档中发现任何不正确、与您在使用特定功能时的经验不符或需要进一步澄清的内容,请使用 此表格 报告文档问题。