为什么需要连接池
在数据库客户端经过网络与数据库服务端连接时候,需要经历TCP协议的三只握手这个耗时的过程,每次查询一次连接上,返回数据即断开连接,下次再次查询又得重复刚刚的操作,基本步骤是:客户端发起连接请求 → 数据传输 → 关闭连接。每一次这样的连接叫做短连接,而且连接的成本很高,在网络拥塞的情况下会更加耗时。
当并发量很低的时候,连接可以临时建立,但当服务吞吐达到几百、几千的时候,频繁 建立连接 Connect
和 销毁连接 Close
就有可能会成为MYsql服务器的一个瓶颈,那么当MYsql服务器启动的时候,先建立好若干个连接并存放于一个队列中,当需要使用时从队列中取出一个并使用,使用完后再反还到队列去,而对这个队列数据结构进行维护的,就是连接池。
成熟的开源连接池项目
1. Apache commons-dbcp 连接池
2. HikariCP
项目地址:https://github.com/brettwooldridge/HikariCP
3. Druid