HikariCP--基础--02--配置参数

HikariCP–基础–02–配置参数


1、config参数

1.1、autoCommit

  1. 从池中借出的连接是否默认自动提交事务
  2. 默认:true

1.2、connectionTimeout

  1. 当我从池中借出连接时,愿意等待多长时间。如果超时,将抛出 SQLException
  2. 默认:30000
  3. 最小值 250 ms。
  4. 支持 JMX 动态修改
  5. 如果小于250毫秒,则被重置回30秒

1.3、idleTimeout

  1. 一个连接在池里闲置多久时会被抛弃
  2. 当 minimumIdle < maximumPoolSize 才生效
  3. 默认:600000
  4. 最小值:10000 ms
    1. 如果idleTimeout!=0且小于10秒,则会被重置为10秒
  5. 0表示禁用该功能。
    1. 如果idleTimeout+1秒>maxLifetime 且 maxLifetime>0,则会被重置为0(代表永远不会退出);
  6. 支持 JMX 动态修改

1.4、maxLifetime

  1. 池中连接最长生命周期,当一个连接存活了足够久,HikariCP 将会在它空闲时把它抛弃
  2. 默认:1800000 ms
  3. 最小值:30000 ms
    1. 如果maxLifetime不等于0且小于30秒则会被重置回30秒
  4. 0 表示禁用该功能。
  5. 支持 JMX 动态修改

1.5、connectionTestQuery

  1. 用来检查连接活性的 sql,要求是一个查询语句,常用select ‘x’
  2. 如果驱动支持 JDBC4.0,建议不设置,这时默认会调用 Connection.isValid() 来检查,该方式会更高效一些
  3. 默认:null

1.6、minimumIdle

  1. 池中维护的最小空闲连接数,池中至少要有多少空闲连接
  2. 默认:等于maximumPoolSize
    1. minIdle<0或者minIdle>maxPoolSize,则被重置为maxPoolSize
  3. 当空闲连接 < minimumIdle,总连接 < maximumPoolSize 时,将新增连接
  4. 支持 JMX 动态修改

1.7、maximumPoolSize

  1. 池中最多容纳多少连接包括空闲的和在用的
  2. 默认:10
  3. 支持 JMX 动态修改

1.8、metricRegistry

  1. 用于记录连接池各项指标的 MetricRegistry 实现
  2. 默认:null,只能通过代码设置

1.9、healthCheckRegistry

  1. 用于报告连接池健康状态的 HealthCheckRegistry 实现类
  2. 默认:null,只能通过代码设置

1.10、poolName

  1. 连接池名称。
  2. 主要用于在日志记录和JMX管理控制台中以识别池和池配置
  3. 默认:HikariPool-1

1.11、initializationFailTimeout

  1. 如果启动连接池时不能成功初始化连接,是否快速失败 TODO
  2. 值>0:会尝试获取连接。如果获取时间超过指定时长,不会开启连接池,并抛出异常
  3. 值=0:会尝试获取并验证连接。如果获取成功但验证失败则不开启池,但是如果获取失败还是会开启池
  4. 值<0:不管是否获取或校验成功都会开启池
  5. 值默认:1

1.12、isolateInternalQueries

  1. 是否在事务中隔离 HikariCP 自己的查询,例如连接活动测试
  2. autoCommit 为 false 时才生效
  3. 默认:false

1.13、allowPoolSuspension

  1. 是否允许通过 JMX 挂起和恢复连接池
  2. 默认:false

1.14、readOnly

  1. 当连接从池中取出时是否设置为只读
  2. 默认:false

1.15、registerMbeans

  1. 是否开启 JMX管理Bean(MBeans)
  2. 默认:false

1.16、catalog

  1. 数据库 catalog,默认由驱动决定
  2. 默认:false

1.17、connectionInitSql

  1. 该属性设置一个SQL语句,在每个连接创建后、放入池前,需要执行的该SQL语句,如果执行失败,该连接会被丢弃
  2. 默认:null

1.18、driverClassName HikariCP

  1. 将尝试通过仅基于jdbcUrl的DriverManager解析驱动程序,但对于一些较旧的驱动程序,还必须指定driverClassName。
  2. 默认:null

1.19、transactionIsolation

  1. 连接的默认事务隔离级别
  2. 默认:null,由驱动决定

1.20、validationTimeout

  1. 校验连接活性允许的超时时间
  2. 默认:5000
  3. 最小值:250 ms
  4. 要求小于 connectionTimeout
  5. 支持 JMX 动态修改

1.21、leakDetectionThreshold

  1. 连接对象可以被借出多久
  2. 默认:0不开启
    1. 如果大于0且不是单元测试,则进一步判断:(leakDetectionThreshold < SECONDS.toMillis(2) or (leakDetectionThreshold > maxLifetime && maxLifetime > 0),会被重置为0。
    2. 如果要生效则必须>0,而且不能小于2秒,而且当maxLifetime > 0时不能大于maxLifetime
  3. 最小允许值:2000 ms。
  4. 支持 JMX 动态修改

1.22、dataSource

  1. 直接指定 DataSource 实例,而不是通过 dataSourceClassName 来反射构造
  2. 默认:null,只能通过代码设置

1.23、schema

  1. 该属性为支持模式概念的数据库设置默认模式,支持SQL Script初始化执行
  2. 默认:null,由驱动决定

1.24、threadFactory

  1. 指定连接池获取线程的 java.util.concurrent.ThreadFactory实例。
  2. 默认:null,只能通过代码设置

1.25、scheduledExecutor

  1. 指定连接池开启定时任务的 java.util.concurrent.ScheduledExecutorService 实例建议设置setRemoveOnCancelPolicy(true)
  2. 默认:null,只能通过代码设置

1.26、keepaliveTime=0

  1. 多久检查一次连接的活性
  2. 检查时会先把连接从池中拿出来空闲的话,然后调用isValid()或执行connectionTestQuery来校验活性,如果通过校验,则放回池里。
  3. 默认:0 不启用
  4. 最小值为 30000 ms
  5. 必须小于 maxLifetime。
  6. 支持 JMX 动态修改

1.27、driverClassName

  1. JDBC 驱动使用的 Driver 实现类,一般根据 jdbcUrl 判断就行,报错说找不到驱动时才需要加
  2. 默认:null

1.28、dataSourceJndiName

  1. JNDI 配置的数据源名
  2. 默认:null

2、application.yml

# 不同数据源这四个配置都会用到
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

#以下的配置项是hikari特有的配置
# 等待连接池分配连接的最大时长(毫秒),超过这个时长还没可用的连接则发生SQLException, 默认:30秒
spring.datasource.hikari.connection-timeout=30000
# 最小连接数
spring.datasource.hikari.minimum-idle=5
# 最大连接数
spring.datasource.hikari.maximum-pool-size=15
# 自动提交
spring.datasource.hikari.auto-commit=true
# 一个连接idle状态的最大时长(毫秒),超时则被释放(retired),默认:10分钟
spring.datasource.hikari.idle-timeout=600000
# 连接池名字
spring.datasource.hikari.pool-name=DatebookHikariCP
# 一个连接的生命时长(毫秒),超时而且没被使用则被释放(retired),默认:30分钟 1800000ms,建议设置比数据库超时时长少60秒
spring.datasource.hikari.max-lifetime=28740000
spring.datasource.hikari.connection-test-query=SELECT 1

#以下是针对MYSQL驱动的配置参数
# 在每个连接中缓存的语句的数量。默认值为保守值25。建议将其设置为250-500之间
spring.datasource.hikari.prepStmtCacheSize = 300
# 缓存的已准备SQL语句的最大长度,默认值是256,但是往往这个长度不够用
spring.datasource.hikari.prepStmtCacheSqlLimit = 2048
# 缓存开关,如果这里设置为false,上面两个参数都不生效
spring.datasource.hikari.cachePrepStmts = true
#较新版本的 MySQL 支持服务器端准备好的语句,这可以提供实质性的性能提升
spring.datasource.hikari.useServerPrepStmts = true

3、监控指标

在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
dynamic-datasource是一个基于Spring Boot的多数据源组件,它提供了强大的功能,持Seata分布式事务,并适用于多种场景,包括纯粹多库、读写分离、一主多从和混合模式等。dynamic-datasource使用了HikariCP作为连接池来管理数据源连接。 HikariCP是一个高性能的JDBC连接池,它具有快速启动、低延迟和高吞吐量的特点。它通过使用轻量级的连接池实现和优化了连接的获取和释放过程,从而提高了数据库访问的性能。 使用dynamic-datasource和HikariCP可以实现动态切换数据源,并且能够根据业务需求灵活配置多个数据源。你可以在配置文件中定义多个数据源,并通过注解或者编程的方式来切换数据源。 以下是一个使用dynamic-datasource和HikariCP的示例配置: 1. 在pom.xml文件中添加dynamic-datasource和HikariCP的依赖: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId> <version>3.4.2</version> </dependency> <dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> <version>3.4.5</version> </dependency> ``` 2. 在application.properties或application.yml文件中配置数据源信息: ```yaml spring: datasource: dynamic: primary: master strict: false datasource: master: url: jdbc:mysql://localhost:3306/master username: root password: root driver-class-name: com.mysql.jdbc.Driver slave: url: jdbc:mysql://localhost:3306/slave username: root password: root driver-class-name: com.mysql.jdbc.Driver ``` 3. 在代码中使用@DS注解来切换数据源: ```java @Service public class UserService { @Autowired private UserMapper userMapper; @DS("master") public User getMasterUser(Long id) { return userMapper.selectById(id); } @DS("slave") public User getSlaveUser(Long id) { return userMapper.selectById(id); } } ``` 在上面的示例中,我们定义了两个数据源:master和slave。通过在方法上使用@DS注解,可以指定使用哪个数据源来执行数据库操作。 通过使用dynamic-datasource和HikariCP,你可以轻松实现多数据源的管理和切换,提高系统的灵活性和性能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值