In plain English
A connection is the open line between your client and one PostgreSQL backend process. A session is the conversation that happens over that connection — your settings, temp tables, and current transaction. One connection = one session = one backend process.
Why it matters
Because each connection is a full OS process with its own memory, thousands of direct connections are expensive. That is why a connection pooler (PgBouncer) is standard for high-concurrency apps.
En palabras simples
Una conexion es la linea abierta entre tu cliente y un proceso backend de PostgreSQL. Una sesion es la conversacion que ocurre por esa conexion: tus parametros, tablas temporales y la transaccion actual. Una conexion = una sesion = un proceso backend.
Por que importa
Como cada conexion es un proceso del sistema con su propia memoria, miles de conexiones directas son caras. Por eso un pooler de conexiones (PgBouncer) es estandar para apps de alta concurrencia.