通常,可以在application.yml
中对数据源进行相应的配置,从性能方面来讲,数据库连接池的优先级为:HikariCP > druid > tomcat-jdbc > dbcp > c3p0
。自 SpringBoot 2.0 起,默认的数据库连接池便是 HikariCP,在 pom 文件中引入spring-boot-starter-parent
后便无需再引入 HikariCP 的依赖。 对于 HikariCP 的配置,主要可以从两个方面获取: 1. SpringBoot官方参考文档 2. HikariCP的github发布页 为了便于日后可能的查询,在此记录下详细的配置信息。
1. 通用配置
代码语言:javascript复制spring:
datasource:
# 数据库驱动
driver-class-name: com.mysql.cj.jdbc.Driver
#数据库链接地址
url: jdbc:mysql://localhost:3306/blue?serverTimezone=UTC
#数据库用户名
username: username
#用户名对应密码
password: passcode
2. 连接池配置
形式为:spring.datasource.hikari.*,推荐的配置形式为:
代码语言:javascript复制spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/blue?serverTimezone=UTC
username: ***
password: ***
hikari:
connection-timeout: 10000
validation-timeout: 3000
idle-timeout: 60000
login-timeout: 5
max-lifetime: 60000
maximum-pool-size: 10
minimum-idle: 5
read-only: false
下面给出详细的配置信息:
- 使用率较高
autoCommit
:用于控制从池中返回连接的默认自动提交行为,默认为true
connectionTimeout
:客户端等待池中连接的最大事件(毫秒),超时则会抛出 SQLException,最低可接受时间为 250ms,默认值为30000ms
idleTimeout
:池中连接保持空闲状态的最长时间,只有在定义的minimumIdle
小于maximumPoolSize
时生效,允许的最小时间为 10000ms。默认为600000ms
keepaliveTime
:用于控制 HikariCP 中空闲线程的最大存活时间,该值必须小于maxLifetime
,最小为 30000ms。默认为 0 (disabled)maxLifetime
:控制连接池中连接的最长时间,正在使用的连接不会被删除,只有当其关闭连接后才会被删除,当设置为 0 时表示永不删除,最小允许值为 30000ms。 默认值为 1800000msconnectionTestQuery
:当使用的驱动为 JDBC4 时不建议设置该项。minimumIdle
:控制 HikariCP 中维护的最小空闲连接数。当空闲连接数小于minimumIdle
并且池中的总连接数少于maximumPoolSize
时,HikariCP 将添加其他连接直到maximumPoolSize
。为了获得最佳性能和对峰值需求的响应能力建议不要设置此值。 默认值与maximumPoolSize
相同maximumPoolSize
:连接池中的最大连接数。默认为10
metricRegistry
:该项仅在编程式配置或IoC容器中使用,允许指定一个Codahale/Dropwizard MetricRegistry
的实例来记录池中的各项指标healthCheckRegistry
:同上,用于报告当前连接池的健康状况poolName
:定义连接池的名称,可以在日志或控制台识别连接池
- 不常使用
initializationFailTimeout
:允许初始化失败的次数。默认值为1
isolateInternalQueries
:控制 HikariCP 是否在其自己的事务中隔离内部池查询,仅在禁用 autoCommit 时适用。默认值为false
allowPoolSuspension
:控制连接池是否可以通过JMX暂停和恢复,当连接池暂停时,对getConnection()
的调用永不超时,直到连接池恢复。默认为false
readOnly
:控制从池中获取的连接是否默认为只读。默认为false
registerMbeans
:控制是否注册JMX Management Bean (MBean)。默认值为false
catalog
:为支持目录概念的数据库设置默认目录。如果未指定此属性,则使用 JDBC 驱动程序定义的默认目录。默认值为driver default
connectionInitSql
:设置一个 SQL 语句,该语句将在每次创建新连接后执行,然后再将其添加到池中。如果此 SQL 无效或引发异常,它将被视为连接失败,并且将遵循标准的重试逻辑。driverClassName
:HikariCP 将尝试通过基于jdbcUrl
的DriverManager
解析驱动程序,但对于一些较旧的驱动程序,必须指定driverClassName
transactionIsolation
:控制从池中返回连接的默认事务隔离级别。如果未指定此属性,则使用 JDBC 驱动定义的默认事务隔离级别。默认值为driver default
validationTimeout
:控制用于测试连接的最长存活时间,该值必须小于connectionTimeout
,最短时间为250ms
。默认值为5000ms
leakDetectionThreshold
:控制在log日志记录可能发生连接泄漏的消息之前,连接可以离开池的时间。值为0
表示禁用泄漏检测。启用泄漏检测的最低时间为2000ms
。 默认值为0
dataSource
:仅可通过编程式配置或IoC容器使用。通过此属性可以直接设置DataSource
要由池包装的的实例,而不必让 HikariCP 通过反射进行构造schema
:为支持schema
概念的数据库设置默认的schema
,如果未指定此属性,则使用 JDBC 驱动定义的默认模式。threadFactory
:仅可通过编程式配置或IoC容器使用。此属性允许通过java.util.concurrent.ThreadFactory
创建池使用的所有线程scheduledExecutor
:仅可通过编程式配置或IoC容器使用。此属性允许通过java.util.concurrent.ScheduledExecutorService
设置实将用于各种内部任务的调度。