数据库连接池常见参数

无论用什么数据库连接池,在配置数据库的时候还需要配置一大堆连接池参数,在Hikari的源码中也有很多的设置参数,那么每一个参数的实际意义是什么提前学习一下很有必要。我之前都是按照网上或者是其他项目的配置文件复制一下直接拿来用,也没有真正思考过这些参数代表的实际意义。所以写一个学习笔记,如有问题请帮忙指出,谢谢。

必须参数

url、driver-class-name、username、password这四个值是最常见的需要配置的参数,也是使用jdbc时至少需要配置的参数。

  1. url

url就是数据库的访问地址,不同的数据库访问地址格式也是不一样。

//mysql,端口默认3306
jdbc:mysql://machine_ip:port/dbname

//sqlserver,端口默认1433
jdbc:microsoft:sqlserver://<machine_ip><:port>;DatabaseName=<dbname>

//oracle,默认端口1521
jdbc:oracle:thin:@machine_ip:port:dbname
  1. driver-class-name

数据库驱动类,已经有了jdbc的规范,但是每一个数据库厂家的具体实现是不一样的,所以需要他们提供的驱动类来真正使用数据库

//mysql5
com.mysql.jdbc.Driver
//mysql6 PS:如果6中使用5的驱动,会抛出异常
com.mysql.cj.jdbc.Driver
//sqlserver
com.microsoft.jdbc.sqlserver.SQLServerDriver 
//oracle
oracle.jdbc.OracleDriver
  1. username、password

这是连接数据库的账号和密码

Hikari常见参数

参数

描述

默认值

autocommit

是否自动提交事务

true

connectionTimeout

连接超时时间(毫秒)

如果在没有连接可用的情况下等待超过此时间,则抛出 SQLException

最小值为250毫秒

30000(30秒)

idleTimeout

空闲超时时间(毫秒)

只有在minimumIdle < maximumPoolSize时生效,超时的连接可能被回收

数值 0 表示空闲连接永不从池中删除

源码中0的时候超时时间为Integer的最大值,即2^31-1

最小值10000毫秒(10秒)

600000(10分钟)

maxLifetime

连接池中的连接的最长生命周期(毫秒)

数值 0 表示不限制

HikariCP 强烈建议我们设置此值,并且比数据库设置的连接时间的值小几秒钟

1800000(30分钟)

connectionTestQuery

连接池每分配一条连接前执行的查询语句(如:SELECT 1),以验证该连接是否是有效的

如果你的驱动程序支持 JDBC4,HikariCP 强烈建议我们不要设置此属性

-

minimumIdle

最小空闲连接数

HikariCP 建议我们不要设置此值,而是充当固定大小的连接池

与maximumPoolSize数值相同

maximumPoolSize

连接池中可同时连接的最大连接数

当池中没有空闲连接可用时,就会阻塞直到超出connectionTimeout设定的数值

10

metricRegistry

此属性只能通过编程或者IOC容器获取

此属性允许您指定池使用的Codahale / Dropwizard MetricRegistry的实例来记录各种度量标准

-

healthCheckRegistry

此属性只能通过编程或者IOC容器获取

此属性允许您指定池使用的Codahale / Dropwizard HealthCheckRegistry的实例来报告当前的健康信息

-

poolName

连接池名称,主要用于显示在日志记录和 JMX 管理控制台中

自动生成