Connection Pooling
Reuse a fixed set of physical DB connections — opening new ones per request is too expensive and the DB has a hard limit.
Opening a database connection is surprisingly expensive — a TCP handshake, authentication, TLS negotiation, and session setup — often tens of milliseconds, which is an eternity to pay on every request. Worse, a database can only sustain a limited number of concurrent connections, each consuming memory and a backend process or thread, so letting every request open its own connection both wastes time and threatens to overwhelm the server. Connection pooling solves both problems by maintaining a fixed set of already-open physical connections that requests borrow and return.
A taxi rank of pre-warmed cars vs calling for a new car each time. Way faster, but only if you size the rank correctly.