概念:sql
最原始的数据库使用就是打开一个链接并进行使用,使用事后关闭链接释放资源。因为频繁的打开和关闭链接对jvm包括数据库
都有必定的资源负荷,尤为应用压力较大时资源占用比较多容易产生性能问题。由此使用链接池的做用就显现出来,他的原理其实不复杂:
先打开必定数量的数据库链接,当使用的时候分配给调用者,调用完毕后返回给链接池,注意返回给链接池后这些链接并不会关闭,而是
准备给下一个调用者进行分配。由此能够看出链接池节省了大量的数据库链接打开和关闭的动做,对系统性能提高的益处不言而喻。
最小链接--应用启动后随即打开的链接数以及后续最小维持的链接数。
最大链接数--应用可以使用的最多的链接数
链接增加数--应用每次新打开的链接个数数据库
举个例子说明链接池的运做:
假设设置了最小和最大的链接为10,20,那么应用一旦启动则首先打开10个数据库链接,但注意此时数据库链接池的正在使用数字为0--由于你并无使用这些链接,而空闲的数量则是10。而后你开始登陆,假设登陆代码使用了一个链接进行查询,那么此时数据库链接池的正在使用数字为一、空闲数为9,这并不须要从数据库打开链接--由于链接池已经准备好了10个给你留着呢。登陆结束了,当前链接池的链接数量是多少?固然是0,由于那个链接随着事务的结束已经返还给链接池了。而后同时有11我的在同一秒进行登陆,会发生什么:链接池从数据库新申请(打开)了一个链接,连同另外的10个一并送出,这个瞬间链接池的使用数是11个,不过不要紧正常状况下过一下子又会变成0。若是同时有21我的登陆呢?那第21我的就只能等前面的某我的登陆完毕后释放链接给他。这时链接池开启了20个数据库链接--虽然极可能正在使用数量的已经降为0,那么20个链接会一直保持吗?固然不,链接池会在必定时间内关闭必定量的链接还给数据库,在这个例子里数字druid是20-10=10,由于只须要保持最小链接数就行了,而这个时间周期也是链接池里配置的。jvm
常见开源数据链接池:性能
1)DBCP优化
DBCP是一个依赖Jakarta commons-pool对象池机制的数据库链接池.DBCP能够直接的在应用程序中使用,Tomcat的数据源使用的就是DBCP。ui