> ...postgres server process listens to one network port, the default port is 5432<p>> Whenever receiving a connection request from a client, it starts a backend process. (And then, the started backend process handles all queries issued by the connected client.)<p>> To achieve this [server] starts ("forks") a new process for each connection. From that point on, the client and the new server process communicate without intervention by the original postgres process. Thus, the master server process is always running, waiting for client connections, whereas client and associated server processes come and go. [1]<p>So, Postgres is using process-per-connection model. Can some explain why this is? And why not something like thread-per-connection?<p>[1] <a href="https://www.postgresql.org/docs/9.6/tutorial-arch.html" rel="nofollow">https://www.postgresql.org/docs/9.6/tutorial-arch.html</a>