主流数据库连接池配置信息梳理

前言:

本文主要针对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、c3p0initialSize、initialSize、initialPoolSize初始化连接数0、0、3
druid、dbcp、c3p0、hikariCPmaxActive、maxActive、maxPoolSize、maximumPoolSize最大连接数8、8、15、10
druid、dbcp、c3p0、hikariCPminIdle、minIdle、minPoolSize、minimumIdle最小连接数0、0、3、10
c3p0acquireIncrement连接池在无空闲连接可用时一次性创建的新数据库连接数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 、hikariCPmaxWait、maxWait、checkoutTimeout、connectionTimeout当连接池用完时客户端调用getConnection()后等待获取新连接的时间.即最大等待时间0、0、0、30000
druid、dbcp、c3p0timeBetweenEvictionRunsMillis 、timeBetweenEvictionRunsMillis 、idleConnectionTestPeriod空闲连接回收配置
c3p0、hikariCPmaxConnectorAge、maxLifetime连接的最大生存期0,30分钟
druid、dbcpremoveAbandoned、removeAbandoned是否开启连接泄漏回收false,false
druid、dbcpremoveAbandonedTimeout、removeAbandonedTimeoutMillis连接泄漏回收参数时间配置300秒,300秒
c3p0maxIdleTimeExcessConnections负载结束后最小化连接数3

测试信息的相关配置:

注意事项:

  1. hikariCP 强烈建议不建议使用connectionTestQuery参数
连接池名称参数参数解释默认值
druid、dbcp、c3p0 、hikariCPvalidationQuery、validationQuery、preferredTestQuery、connectionTestQuery测试连接的sql语句
druid、dbcp ,hikariCPtestOnBorrow、testOnBorrow,connectionInitSql申请连接时执行validationQuery检测连接是否有效true、true
druid、dbcptestOnReturn、testOnReturn归还连接时执行validationQuery检测连接是否有效false、false
druid、dbcptestWhileIdle、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驱动程序定义的默认模式。 默认:驱动程序默认
连接池名称参数参数解释默认值
druidfilters属性类型是字符串,通过别名的方式配置扩展插件
druidproxyFilters配置扩展插件参数
hikariCPcatalog设置默认目录
hikariCPautoCommit设置默认自动提交true
hikariCPschema设置默认模式

待补充…

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
MySQL数据库连接池配置可以通过以下步骤实现: 1. 在MySQL中创建一个用户,并授权该用户可以访问需要连接的数据库。 2. 在Java程序中引入数据库连接池的相关依赖,比如常用的Apache Commons DBCP或者HikariCP等。 3. 在Java程序中配置连接池参数,比如最大连接数、最小连接数、连接超时时间等。 4. 在Java程序中编写代码,使用连接池获取数据库连接,执行SQL语句。 以下是一个简单的MySQL数据库连接池配置示例: 1. 创建一个MySQL用户,并授权该用户可以访问需要连接的数据库: ``` CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword'; GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'localhost'; ``` 2. 在Java程序中引入数据库连接池的相关依赖,比如HikariCP: ``` <dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> <version>3.4.5</version> </dependency> ``` 3. 在Java程序中配置连接池参数: ``` java HikariConfig config = new HikariConfig(); config.setJdbcUrl("jdbc:mysql://localhost:3306/mydatabase"); config.setUsername("myuser"); config.setPassword("mypassword"); config.setMaximumPoolSize(10); config.setMinimumIdle(5); config.setConnectionTimeout(30000); ``` 4. 在Java程序中编写代码,使用连接池获取数据库连接,执行SQL语句: ``` java try (Connection conn = new HikariDataSource(config).getConnection()) { PreparedStatement statement = conn.prepareStatement("SELECT * FROM mytable"); ResultSet rs = statement.executeQuery(); while (rs.next()) { // 处理查询结果 } } catch (SQLException e) { e.printStackTrace(); } ``` 注意:以上示例仅供参考,具体的配置和使用方式需要根据实际情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值