前言:

本文主要针对c3p0、dbcp、druid、hikariCP主流数据库连接池,进行参数配置信息梳理。

基础的参数配置:

  1. name:连接池用户自定义名称(经测试c3p0无该属性,hikariCP为poolname)
  2. driverClass : 数据库驱动(比如com.mysql.cj.jdbc.Driver,或者oracle数据库的驱动)
  3. jdbcUrl: jdbc数据库连接地址(例如jdbc:mysql://localhost:3306/test)
  4. username:数据库用户名
  5. password:和数据库用户名对应的数据库密码

**连接数信息的相关配置:

注意事项:

  1. DBCP连接池中maxIdle值与maxActive值应配置的接近,当连接数超过maxIdle值后,结束使用的连接会立即被销毁
  2. 个人觉得是因为maxIdle和maxActive两个参数太过于烧脑,druid中maxIdle参数已取消使用,即使配置了也不生效

连接池名称

参数

参数解释

默认值

druid、dbcp、c3p0

initialSize、initialSize、initialPoolSize

初始化连接数

0、0、3

druid、dbcp、c3p0、hikariCP

maxActive、maxActive、maxPoolSize、maximumPoolSize

最大连接数

8、8、15、10

druid、dbcp、c3p0、hikariCP

minIdle、minIdle、minPoolSize、minimumIdle

最小连接数

0、0、3、10

c3p0

acquireIncrement

连接池在无空闲连接可用时一次性创建的新数据库连接数

3

连接时间信息的相关配置:

注意事项:

  1. druid、dbcp的timeBetweenEvictionRunsMillis参数需要配合minEvictableIdleTimeMillis参数使用,代表每x毫秒回收超过x毫秒空闲的连接
  2. c3p0的idleConnectionTestPeriod参数需要配合maxIdleTime参数使用,单位为秒
  3. 连接最大生存期设置为0,视为无限寿命
  4. maxIdleTimeExcessConnections用于在池未加载时最小化c3p0池所持有的Connections数。默认情况下,c3p0池在负载下增长,但只有在Connections通过Connection测试失败或通过上述参数过期时才会收缩。minPoolSize只有在与之结合使用时才有意义maxIdleTimeExcessConnections,否则,它将完全被忽略。
  5. dbcp连接泄露时默认每次扫描关闭3个空闲连接可通过配置numTestsPerEvictionRun参数修改,druid连接泄露时默认每次扫描关闭20个空闲连接

连接池名称

参数

参数解释

默认值

druid、dbcp、c3p0 、hikariCP

maxWait、maxWait、checkoutTimeout、connectionTimeout

当连接池用完时客户端调用getConnection()后等待获取新连接的时间.即最大等待时间

0、0、0、30000

druid、dbcp、c3p0

timeBetweenEvictionRunsMillis 、timeBetweenEvictionRunsMillis 、idleConnectionTestPeriod

空闲连接回收配置

c3p0、hikariCP

maxConnectorAge、maxLifetime

连接的最大生存期

0,30分钟

druid、dbcp

removeAbandoned、removeAbandoned

是否开启连接泄漏回收

false,false

druid、dbcp

removeAbandonedTimeout、removeAbandonedTimeoutMillis

连接泄漏回收参数时间配置

300秒,300秒

c3p0

maxIdleTimeExcessConnections

负载结束后最小化连接数

3

测试信息的相关配置:

注意事项:

  1. hikariCP 强烈建议不建议使用connectionTestQuery参数

连接池名称

参数

参数解释

默认值

druid、dbcp、c3p0 、hikariCP

validationQuery、validationQuery、preferredTestQuery、connectionTestQuery

测试连接的sql语句

druid、dbcp ,hikariCP

testOnBorrow、testOnBorrow,connectionInitSql

申请连接时执行validationQuery检测连接是否有效

true、true

druid、dbcp

testOnReturn、testOnReturn

归还连接时执行validationQuery检测连接是否有效

false、false

druid、dbcp

testWhileIdle、testWhileIdle

申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效

false、false

特性相关的相关配置:

注意事项:

  1. druid的filters参数,例:druidDataSource.setFilters(“stat,config,slf4j”);proxyFilters参数类型是List<com.alibaba.druid.filter.Filter>,如果同时配置了filters和proxyFilters,是组合关系,并非替换关系
  2. hikariCP catalog参数设置默认目录为支持目录的概念数据库。如果未指定此属性,则使用由JDBC驱动程序定义的默认目录。 默认:驱动程序默认;autoCommit此属性控制从池返回的连接的默认自动提交行为。它是一个布尔值。 默认值:true;schema该属性设置的默认模式为支持模式的概念数据库。如果未指定此属性,则使用由JDBC驱动程序定义的默认模式。 默认:驱动程序默认

连接池名称

参数

参数解释

默认值

druid

filters

属性类型是字符串,通过别名的方式配置扩展插件

druid

proxyFilters

配置扩展插件参数

hikariCP

catalog

设置默认目录

hikariCP

autoCommit

设置默认自动提交

true

hikariCP

schema

设置默认模式