Springboot2.0之HikariCP 连接池
springboot的HikariDataSource默认配置的默认值如下
name | 构造器默认值 | 默认配置validate之后的值 | validate重置 |
---|---|---|---|
minIdle | -1 | 10 | minIdle<0或者minIdle>maxPoolSize,则被重置为maxPoolSize |
maxPoolSize | -1 | 10 | 如果maxPoolSize小于1,则会被重置。当minIdle<=0被重置为DEFAULT_POOL_SIZE则为10;如果minIdle>0则重置为minIdle的值 |
maxLifetime | MINUTES.toMillis(30) = 1800000 | 1800000 | 如果不等于0且小于30秒则会被重置回30分钟 |
connectionTimeout | SECONDS.toMillis(30) = 30000 | 30000 | 如果小于250毫秒,则被重置回30秒 |
validationTimeout | SECONDS.toMillis(5) = 5000 | 5000 | 如果小于250毫秒,则会被重置回5秒 |
loginTimeout | 10 | 30 | Math.max(1, (int) MILLISECONDS.toSeconds(500L + connectionTimeout)),为connectionTimeout+500ms转为秒数取整 与 1 取最大者 |
idleTimeout | MINUTES.toMillis(10) = 600000 | 600000 | 如果idleTimeout+1秒>maxLifetime 且 maxLifetime>0,则会被重置为0;如果idleTimeout!=0且小于10秒,则会被重置为10秒 |
leakDetectionThreshold | 0 | 0 | 如果大于0且不是单元测试,则进一步判断:(leakDetectionThreshold < SECONDS.toMillis(2) or (leakDetectionThreshold > maxLifetime && maxLifetime > 0),会被重置为0 . 即如果要生效则必须>0,而且不能小于2秒,而且当maxLifetime > 0时不能大于maxLifetime |
initializationFailTimeout | 1 | 1 | - |
isAutoCommit | true | true | - |
isReadOnly | false | fasle | - |
isAllowPoolSuspension | false | false | - |
isIsolateInternalQueries | false | false | - |
isRegisterMbeans | false | false | - |
sealed | false | true | 运行启动后这个标志为true,表示不再运行修改 |
poolName | null | HikariPool-1 | - |
catalog | null | null | - |
connectionInitSql | null | null | - |
connectionTestQuery | null | null | - |
dataSourceClassName | null | null | - |
schema | null | null | - |
transactionIsolationName | null | null | - |
dataSource | null | null | - |
dataSourceProperties | {} | {} | - |
threadFactory | null | null | - |
scheduledExecutor | null | null | - |
metricsTrackerFactory | null | null | - |
metricRegistry | null | null | - |
healthCheckRegistry | null | null | - |
healthCheckProperties | {} | {} | - |
连接hikari数据源
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
数据库连接地址
spring.datasource.hikari.jdbc-url=
数据库账户,如果使用了jdbcUrl则需要此属性
spring.datasource.hikari.username=
数据库密码,如果使用了jdbcUrl则需要此属性
spring.datasource.hikari.password=
是否自动提交事务
spring.datasource.hikari.auto-commit=
连接超时时间(毫秒),如果在没有连接可用的情况下等待超过此时间,则抛出 SQLException 默认30000(30秒)
spring.datasource.hikari.connection-timeout=
空闲超时时间(毫秒),只有在minimumIdle<maximumPoolSize时生效,超时的连接可能被回收,数值 0 表示空闲连接永不从池中删除 默认600000(10分钟)
spring.datasource.hikari.idle-timeout=
连接池中的连接的最长生命周期(毫秒)。数值 0 表示不限制 默认1800000(30分钟)
spring.datasource.hikari.max-lifetime=
连接池每分配一条连接前执行的查询语句(如:SELECT 1),以验证该连接是否是有效的
。如果你的驱动程序支持 JDBC4,HikariCP 强烈建议我们不要设置此属性
spring.datasource.hikari.connection-test-query=SELECT 1
最小空闲连接数,HikariCP 建议我们不要设置此值,而是充当固定大小的连接池 默认与maximumPoolSize数值相同
spring.datasource.hikari.minimum-idle=
连接池中可同时连接的最大连接数,当池中没有空闲连接可用时,就会阻塞直到超出connectionTimeout设定的数值 默认10
spring.datasource.hikari.maximum-pool-size=
连接池名称,主要用于显示在日志记录和 JMX 管理控制台中
spring.datasource.hikari.pool-name=HeartHikariCP
是否标记数据源只读 true 或者 false
spring.datasource.hikari.read-only=
使用HikariCP时,是否允许连接池暂停,默认为: false
spring.datasource.hikari.allow-pool-suspension=
是否自定义配置,为true时下面两个参数才生效
spring.datasource.hikari.data-source-properties.cachePrepStmts=true
连接池大小默认25,官方推荐250-500
spring.datasource.hikari.data-source-properties.prepStmtCacheSize=
单条语句最大长度默认256,官方推荐2048
spring.datasource.hikari.data-source-properties.prepStmtCacheSqlLimit=
新版本MySQL支持服务器端准备,开启能够得到显著性能提升 true 或者 false
spring.datasource.hikari.data-source-properties.useServerPrepStmts=
使用Hikari connection pool 时,在心跳检查时传递的属性
spring.datasource.hikari.health-check-properties.[key]
使用Hikari connection pool时,多少毫秒检测一次连接泄露.
spring.datasource.hikari.leak-detection-threshold=