前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot 中 HikariCP 的相关配置

SpringBoot 中 HikariCP 的相关配置

作者头像
京剧猫
发布2023-03-04 11:27:42
2.3K0
发布2023-03-04 11:27:42
举报
文章被收录于专栏:Pixel Fandom

通常,可以在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

下面给出详细的配置信息:

  • 使用率较高
  1. autoCommit:用于控制从池中返回连接的默认自动提交行为,默认为true
  2. connectionTimeout:客户端等待池中连接的最大事件(毫秒),超时则会抛出 SQLException,最低可接受时间为 250ms,默认值为30000ms
  3. idleTimeout:池中连接保持空闲状态的最长时间,只有在定义的minimumIdle 小于maximumPoolSize时生效,允许的最小时间为 10000ms。默认为 600000ms
  4. keepaliveTime:用于控制 HikariCP 中空闲线程的最大存活时间,该值必须小于maxLifetime,最小为 30000ms。默认为 0 (disabled)
  5. maxLifetime:控制连接池中连接的最长时间,正在使用的连接不会被删除,只有当其关闭连接后才会被删除,当设置为 0 时表示永不删除,最小允许值为 30000ms。 默认值为 1800000ms
  6. connectionTestQuery:当使用的驱动为 JDBC4 时不建议设置该项。
  7. minimumIdle:控制 HikariCP 中维护的最小空闲连接数。当空闲连接数小于 minimumIdle 并且池中的总连接数少于 maximumPoolSize 时,HikariCP 将添加其他连接直到 maximumPoolSize。为了获得最佳性能和对峰值需求的响应能力建议不要设置此值。 默认值与 maximumPoolSize 相同
  8. maximumPoolSize:连接池中的最大连接数。默认为 10
  9. metricRegistry:该项仅在编程式配置IoC容器中使用,允许指定一个 Codahale/Dropwizard MetricRegistry 的实例来记录池中的各项指标
  10. healthCheckRegistry:同上,用于报告当前连接池的健康状况
  11. poolName:定义连接池的名称,可以在日志或控制台识别连接池
  • 不常使用
  1. initializationFailTimeout:允许初始化失败的次数。默认值为 1
  2. isolateInternalQueries:控制 HikariCP 是否在其自己的事务中隔离内部池查询,仅在禁用 autoCommit 时适用。默认值为 false
  3. allowPoolSuspension:控制连接池是否可以通过JMX暂停和恢复,当连接池暂停时,对 getConnection() 的调用永不超时,直到连接池恢复。默认为 false
  4. readOnly:控制从池中获取的连接是否默认为只读。默认为 false
  5. registerMbeans:控制是否注册JMX Management Bean (MBean)。默认值为 false
  6. catalog:为支持目录概念的数据库设置默认目录。如果未指定此属性,则使用 JDBC 驱动程序定义的默认目录。默认值为 driver default
  7. connectionInitSql:设置一个 SQL 语句,该语句将在每次创建新连接后执行,然后再将其添加到池中。如果此 SQL 无效或引发异常,它将被视为连接失败,并且将遵循标准的重试逻辑。
  8. driverClassName:HikariCP 将尝试通过基于 jdbcUrlDriverManager 解析驱动程序,但对于一些较旧的驱动程序,必须指定 driverClassName
  9. transactionIsolation:控制从池中返回连接的默认事务隔离级别。如果未指定此属性,则使用 JDBC 驱动定义的默认事务隔离级别。默认值为 driver default
  10. validationTimeout:控制用于测试连接的最长存活时间,该值必须小于 connectionTimeout,最短时间为 250ms。默认值为 5000ms
  11. leakDetectionThreshold:控制在log日志记录可能发生连接泄漏的消息之前,连接可以离开池的时间。值为 0 表示禁用泄漏检测。启用泄漏检测的最低时间为 2000ms。 默认值为 0
  12. dataSource:仅可通过编程式配置IoC容器使用。通过此属性可以直接设置 DataSource 要由池包装的的实例,而不必让 HikariCP 通过反射进行构造
  13. schema:为支持 schema 概念的数据库设置默认的 schema,如果未指定此属性,则使用 JDBC 驱动定义的默认模式。
  14. threadFactory:仅可通过编程式配置IoC容器使用。此属性允许通过 java.util.concurrent.ThreadFactory 创建池使用的所有线程
  15. scheduledExecutor:仅可通过编程式配置IoC容器使用。此属性允许通过 java.util.concurrent.ScheduledExecutorService 设置实将用于各种内部任务的调度。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022/12/15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 通用配置
  • 2. 连接池配置
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档