Postgres术语:客户端与连接

时间:2017-01-06 17:14:06

标签: postgresql

在Postgres中,客户端和连接之间是否存在一对一的关系?换句话说,客户端总是一个连接,没有客户端可以打开多个连接吗?

例如,当Postgres说:

  

org.postgresql.util.PSQLException:致命:抱歉,已经有太多客户了。

相当于“已经有太多连接”了吗?

另外,据我所知,Postgres为每个客户使用一个进程。那么这是否意味着每个进程仅用于一个连接?

2 个答案:

答案 0 :(得分:1)

参考 - https://www.postgresql.org/docs/9.6/static/connect-estab.html

  

使用简单的“每个用户进程”实现PostgreSQL   客户/服务器模型。在此模型中,有一个客户端进程   连接到一个服务器进程。因为我们不知道提前   时间将建立多少连接,我们必须使用一个主人   每次连接时生成新服务器进程的进程   请求。

所以是的,一个服务器进程提供一个连接。

答案 1 :(得分:0)

您可以从服务器可以管理的单个客户端(计算机,应用程序)获得尽可能多的连接。服务器可以支持给定数量的连接,无论这些连接是否来自不同的客户端(机器,应用程序)与服务器无关。

连接正在侦听PG配置为侦听的端口的postmaster进程(默认为5432)。建立连接后(身份验证后),服务器会生成一个由单个客户端专门使用的进程。该客户端可以与同一服务器建立多个连接,例如连接到不同的数据库,或者使用不同的凭据等连接到同一个数据库。