connect-estab.md 1.5 KB
Newer Older
李少辉-开发者's avatar
李少辉-开发者 已提交
1 2 3 4 5 6 7
## 51.2.如何建立联系

PostgreSQL实现了“每用户进程”的客户机/服务器模型。在这个模型中,每个[](glossary.html#GLOSSARY-CLIENT)*[客户端进程](glossary.html#GLOSSARY-CLIENT)*正好连接到一个[](glossary.html#GLOSSARY-BACKEND)*[后段制程](glossary.html#GLOSSARY-BACKEND)*。由于我们无法提前知道将建立多少个连接,因此我们必须使用“主管进程”,每次请求连接时都会生成一个新的后端进程。这个过程叫做[](glossary.html#GLOSSARY-POSTMASTER)*[邮政局长](glossary.html#GLOSSARY-POSTMASTER)*并在指定的TCP/IP端口侦听传入连接。每当它检测到连接请求时,就会产生一个新的后端进程。这些后端进程相互通信,并与系统的其他进程通信[](glossary.html#GLOSSARY-INSTANCE)*[例子](glossary.html#GLOSSARY-INSTANCE)*使用*信号灯*[](glossary.html#GLOSSARY-SHARED-MEMORY)*[共享内存](glossary.html#GLOSSARY-SHARED-MEMORY)*确保整个并发数据访问过程中的数据完整性。

客户端进程可以是理解中所述PostgreSQL协议的任何程序[第53章](protocol.html).许多客户端都基于C语言库libpq,但该协议有几个独立的实现,例如Java JDBC驱动程序。

一旦建立了连接,客户端进程就可以向其连接的后端进程发送查询。查询是使用纯文本传输的,也就是说,在客户端没有进行解析。后端进程解析查询,创建*执行计划*,执行计划,并通过已建立的连接将检索到的行传输给客户端。