DBCP:github地址:https://github.com/apache/commons-dbcp apache
c3p0: github地址:https://github.com/swaldman/c3p0 swaldman(个人)
druid:github地址:https://github.com/alibaba/druid/wiki alibaba
1)DBCP
DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池.DBCP可以直接的在应用程序中使用,Tomcat的数据源使用的就是DBCP。
2)c3p0
c3p0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSources 对象。
3)Druid
阿里出品,淘宝和支付宝专用数据库连接池,但它不仅仅是一个数据库连接池,它还包含一个ProxyDriver,一系列内置的JDBC组件库,一个SQL Parser。支持所有JDBC兼容的数据库,包括Oracle、MySql、Derby、Postgresql、SQL Server、H2等等。
基本配置:
|
DBCP |
c3p0 |
Druid |
| 用户名 |
username |
user |
username |
| 密码 |
password |
password |
password |
| URL |
url |
jdbcUrl |
jdbcUrl |
| 驱动类名 |
driverClassName |
driverClass |
driverClassName |
关键配置:
|
DBCP |
c3p0 |
Druid |
| 最小连接数 |
minIdle(0) |
minPoolSize(3) |
minIdle(0) |
| 初始化连接数 |
initialSize(0) |
initialPoolSize(3) |
initialSize(0) |
| 最大连接数 |
maxTotal(8) |
maxPoolSize(15) |
maxActive(8) |
| 最大等待时间 |
maxWaitMillis(毫秒) |
maxIdleTime(0秒) |
maxWait(毫秒) |
说明:
数据库连接池在初始化的时候会创建initialSize个连接,当有数据库操作时,会从池中取出一个连接。如果当前池中正在使用的连接数等于maxActive,则会等待一段时间,等待其他操作释放掉某一个连接,如果这个等待时间超过了maxWait,则会报错;如果当前正在使用的连接数没有达到maxActive,则判断当前是否空闲连接,如果有则直接使用空闲连接,如果没有则新建立一个连接。在连接使用完毕后,不是将其物理连接关闭,而是将其放入池中等待其他操作复用
性能配置:
预缓存配置:
|
DBCP |
c3p0 |
Druid |
| 开启缓存功能 |
poolPreparedStatements |
maxStatementspool |
PreparedStatements |
| 单个连接拥有的最大缓存数maxOpenPrepared-Statements |
maxStatementsPer-Connection |
maxOpenPrepared-Statements |
|
连接有效性检测设置:
|
DBCP |
c3p0 |
Druid |
| 申请连接检测 |
testOnBorrow |
testConnectionOnCheckin |
testOnBorrow |
| 是否超时检测 |
testWhileIdle |
|
testWhileIdle |
| 空闲时间 |
timeBetweenEvictionRunsMillis |
idleConnectionTestPeriod |
timeBetweenEvictionRunsMillis |
| 校验用sql语句 |
validationQuery |
preferredTestQuery |
validationQuery |
| 归还连接检测 |
testOnReturn |
testConnectionOnCheckout |
testOnReturn |
超时连接关闭设置:
|
DBCP |
c3p0 |
Druid |
| 是否超时关闭连接 |
removeAbandoned |
breakAfterAcquireFailure |
removeAbandoned |
| 超时时间 |
removeAbandonedTimeout |
checkoutTimeout |
removeAbandonedTimeout |
| 是否记录日志 |
logAbandoned |
|
logAbandoned |
重连设置
|
DBCP |
c3p0 |
Druid |
| 重连次数 |
|
acquireRetryAttempts |
|
| 间隔时间 |
|
acquireRetryDelay |
|
参考博客:
https://cloud.tencent.com/developer/article/1435696