La creazione di una connessione al database può essere o meno un'operazione costosa, a seconda del proprio ambiente e di ciò che si intende fare con esso.
Se si sta per eseguire una sola query molto semplice, la connessione probabilmente richiede più tempo (o più) della query.
Alcuni database hanno un overhead di connessione molto più grande di altri; se ottimizzato correttamente, mysql dovrebbe avere pochissimo (sopra il tempo per fare una connessione TCP e fare l'handshake del protocollo). Tuttavia, se la latenza sul server è molto alta, anche questa può essere abbastanza significativa (in particolare se si intende fare solo alcune query).
Se si prevede di fare, ad esempio, 100 query o alcune query molto lente, il tempo di connessione scompare in insignificanza.
In generale, direi di aprire una nuova connessione ogni volta finché non si può dimostrare che si tratta di un problema di prestazioni reali. Utilizzando il pool di connessioni può portare a bug, che non ci piace: Stato
- collegamento non è stato completamente azzerato dopo l'uso precedente in piscina - così uno stato si sofferma e crea un comportamento imprevisto con conseguente un bug
- connessione è stata chiusa in qualche modo (magari da un timeout firewall stateful) che non può essere rilevato, quindi, un'applicazione tenta di utilizzare una connessione chiusa, provocando un lungo ritardo o mancata
Dal Sachin ha chiesto in modo specifico a quali pool possono essere rivolte le prestazioni, aggiungo che generalmente hanno senso solo in un cli applicazione ent-server, in cui si hanno meno connessioni rispetto agli utenti. In particolare, non avrebbero senso in un'app thick-client in cui un utente si connette a un database. –