数据库连接池在初始化的时候会创建initialSize个连接,当有数据库操作时,会从池中取出一个连接。如果当前池中正在使用的连接数等于maxActive,则会等待一段时间,等待其他操作释放掉某一个连接,如果这个等待时间超过了maxWait,则会报错;如果当前正在使用的连接数没有达到maxActive,则判断当前是否空闲连接,如果有则直接使用空闲连接,如果没有则新建立一个连接。在连接使用完毕后,不是将其物理连接关闭,而是将其放入池中等待其他操作复用。
对于一个数据库连接池,一般包括一下属性。
名称 说明 备注
minIdle 最小活跃数 可以允许的空闲连接数目
maxActive 最大连接数 相当于池的大小
initialSize 初始化连接大小
maxWait 获取连接的最大等待时间
timeBetweenEvictionRunsMillis 空闲连接的最大生存时间 指定空闲连接在空闲多长时间后,关闭其物理连接
testWhileIdle 是否在空闲时检测连接可用性 由于网络或者数据库配置的原因(比如mysql连接的8小时限制),开启这个开关可以定期检测连接的可用性