Establishing a database connection requires a TCP Handshake, authentication, and internal DB state allocation. If an application spins up a new connection for every HTTP request, it will rapidly exhaust socket ports and CPU resources.

Connection Pooling maintains a pool of "hot", persistent TCP sockets. When a request comes in, a socket is borrowed, used, and returned to the pool, skipping the multi-RTT setup penalty entirely.