Spring Boot配置Hikari连接池

发布时间 2023-04-26 15:51:46作者: ZuiTaiPing
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    password: xxxx
    username: root
    url: jdbc:mysql://www.xxxxxx.cn:3306/thisDemo?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8&useSSL=false
    hikari:
      auto-commit: true # 空闲连接存活最大时间(毫秒)。
      connection-test-query: SELECT 1 # 数据库连接测试
      maximum-pool-size: 20  # 连接池最大连接数,默认和minimum-idle相等,连接越多对性能影响越大
      minimum-idle: 5 # 连接池最小空闲连接,默认值与maximum-pool-size相等。
      connection-timeout: 30000 # 连接超时时间(毫秒)
      idle-timeout: 30000 # 空闲连接存活最大时间(毫秒)。 idle-timeout 要小于 max-lifetime
      max-lifetime: 120000 # 池中连接最长生命周期。默认为 1800000,如果不等于 0 且小于 30 秒则会被重置回 30 分钟。强烈建议设置这个参数。

Spring Boot默认使用Hikari连接池

以 Hikari 开头的配置都是可选的配置,都有默认的值。

  • autoCommit: 默认是 true,自动提交从池中返回的连接。
  • connectionTimeout:等待来自池的连接的最大毫秒数,默认为 30000 ms = 30 s,允许最小时间是 250 毫秒,如果小于 250 毫秒,则被重置回 30 秒。
  • idleTimeout: 连接允许在池中闲置的最长时间,默认为 600000,即 10 分钟。如果 idleTimeout + 1 秒 > maxLifetime 且 maxLifetime > 0,则会被重置为 0(代表永远不会退出);如果 idleTimeout != 0 且小于 10 秒,则会被重置为 10 秒。只有当 minimumIdle 小于 maximumPoolSize 时,这个参数才生效,当空闲连接数超过 minimumIdle,而且空闲时间超过 idleTimeout,则会被移除。
  • keepaliveTime:连接存活时间,这个值必须小于 maxLifetime 值。Keepalive "只会发生在空闲的连接上。当对一个给定的连接进行 "keepalive "的时间到了,该连接将从池中移除。允许的最小值是 30000 ms(30秒),但最理想的值是在分钟范围内。默认值:0
  • maxLifetime:池中连接最长生命周期。默认为 1800000,如果不等于 0 且小于 30 秒则会被重置回 30 分钟。强烈建议设置这个参数。
  • minimumIdle:控制连接池空闲连接的最小数量,当连接池空闲连接少于 minimumIdle,而且总共连接数不大于 maximumPoolSize 时,HikariCP 会尽力补充新的连接。为了性能考虑,不建议设置此值,而是让 HikariCP 把连接池当做固定大小的处理,默认 minimumIdle 与 maximumPoolSize 一样。当 minIdle < 0 或者 minIdle > maxPoolSize,则被重置为 maxPoolSize,该值默认为 10。
  • maximumPoolSize:池中最大连接数,包括闲置和使用中的连接。默认为 10。如果 maxPoolSize 小于1,则会被重置。当 minIdle <=0 被重置为DEFAULT_POOL_SIZE 则为 10;如果 minIdle > 0 则重置为 minIdle 的值。
  • poolName:连接池的用户定义名称,主要出现在日志记录和 JMX 管理控制台中以识别池和池配置。默认为 HikariPool-1。
  • readOnly:从池中获取的连接是否默认处于只读模式。默认为 false。这个属性工作与否取决于数据库的实现。
  • connectionTestQuery:如果你的驱动程序支持 JDBC4,我们强烈建议不要设置这个属性。这是针对不支持 JDBC4 Connection.isValid() API的 "传统 "驱动程序。这是一个查询,在一个连接从池子里给你之前会被执行,以验证与数据库的连接是否仍然有效。同样,尝试在没有这个属性的情况下运行数据库池,如果你的驱动不符合JDBC4标准,HikariCP 会记录一个错误,让你知道。默认值:无。

注意:idle-timeout值要小于 max-lifetime值