What is the need for Singleton Pattern ?

Let's say we need to connect to DB and for every request if we keep creating a new Instance of Db connection to connect to Db this will create a Performance overhead. As it is costly to create a Db connection for every request and it takes time to create the connection which causes delay.

How can we solve this ?

If we keep one connection and use it everytime connecting to DB for every request then while one request is using the connection other requests need to wait. to solve this we need to create a DB connection pool

properties that db connection pool need to satisfy :