java-数据库连接池
数据库连接是一种关键的有限的昂贵的资源,每次的创建和关闭都是资源的消耗:
以前的的每次连接流程:
三次握手,mysql执行,四次握手
使用连接池:
连接池中的连接只会一直存在,只是可能不被使用罢了,
减少新建连接和关闭连接的操作,执行SQL语句只需执行即可
连接池的流程:
1在系统初始化时,连接池会根据系统配置建立,并在池中创建了几个连接对象,以便使用时能从连接池中获取
2当客户请求数据库连接时,首先查看连接池中是否有空闲连接,如果存在空闲连接,则将连接分配给客户使用;
2如果没有空闲连接,则查看当前所开的连接数是否已经达到最大连接数,如果没达到就重新创建一个连接给请求的客户;
2如果达到就按设定的最大等待时间进行等待,如果超出最大等待时间,则抛出异常给客户。
2当客户释放数据库连接时,先判断该连接的引用次数是否超过了规定值
如果超过就从连接池中删除该连接
,否则保留为其他客户服务。
33当应用程序退出时,关闭连接池中所有的连接,释放连接池相关的资源,该过程正好与创建相反
入下图:
java常见的连接池:
有dbcp、druid、HikariCP、tomcat-jdbc、c3p0
对比
性能从高到底分别是:HikariCP、druid、tomcat-jdbc、c3p0