在Postgres中,客户端和连接之间是否存在一对一的关系?换句话说,客户端总是一个连接,没有客户端可以打开多个连接吗?
例如,当Postgres说:
org.postgresql.util.PSQLException:致命:抱歉,已经有太多客户了。
相当于“已经有太多连接”了吗?
另外,据我所知,Postgres为每个客户使用一个进程。那么这是否意味着每个进程仅用于一个连接?
答案 0 :(得分:1)
参考 - https://www.postgresql.org/docs/9.6/static/connect-estab.html
使用简单的“每个用户进程”实现PostgreSQL 客户/服务器模型。在此模型中,有一个客户端进程 连接到一个服务器进程。因为我们不知道提前 时间将建立多少连接,我们必须使用一个主人 每次连接时生成新服务器进程的进程 请求。
所以是的,一个服务器进程提供一个连接。
答案 1 :(得分:0)
您可以从服务器可以管理的单个客户端(计算机,应用程序)获得尽可能多的连接。服务器可以支持给定数量的连接,无论这些连接是否来自不同的客户端(机器,应用程序)与服务器无关。
连接正在侦听PG配置为侦听的端口的postmaster
进程(默认为5432)。建立连接后(身份验证后),服务器会生成一个由单个客户端专门使用的进程。该客户端可以与同一服务器建立多个连接,例如连接到不同的数据库,或者使用不同的凭据等连接到同一个数据库。