SpringBoot整合 HikariCP

这篇具有很好参考价值的文章主要介绍了SpringBoot整合 HikariCP。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概述

HiKariCP (opens new window)是数据库连接池的一个后起之秀,号称性能最好,可以完美地 PK 掉其他连接池。Hikari(ひかり[shi ga li]) 来自日文,是 光 的意思,这个产品的口号是 快速、简单、可靠。总得来说,它是一个高性能的 JDBC 连接池,基于 BoneCP 做了不少的改进和优化,就连 BoneCP 作者放弃维护,在Github 项目主页推荐大家使用 HikariCP。(BoneCP 在快速这个特点上做到了极致,例如是C3P0的25倍左右)

HiKariCP 从 Spring Boot 2.x 后纳入为默认的数据连接池。

HiKariCP 特性

  • 字节码精简 : 优化代码,直到编译后的字节码最少,这样,CPU 缓存可以加载更多的程序代码
  • 优化代理和拦截器 : 减少代码,例如 HikariCP 的 Statement proxy 只有 100 行代码,只有 BoneCP 的十分之一
  • 自定义数组类型(FastStatementList)代替 ArrayList : 避免每次 get() 调用都要进行 range check,避免调用 remove() 时的从头到尾的扫描
  • 自定义集合类型(ConcurrentBag): 提高并发读写的效率
  • 其他针对 BoneCP 缺陷的优化: 比如对于耗时超过一个 CPU 时间片的方法调用的研究(但没说具体怎么优化)

常用参数配置

属性 默认值 说明
autoCommit true 自动提交从池中返回的连接
connectionTimeout 30000 等待来自池的连接的最大毫秒数
maxLifetime 1800000 池中连接最长生命周期如果不等于0且小于30秒则会被重置回30分钟
minimumIdle 10 池中维护的最小空闲连接数 minIdle<0或者minIdle>maxPoolSize,则被重置为maxPoolSize
maximumPoolSize 10 池中最大连接数,包括闲置和使用中的连接
metricRegistry null 连接池的用户定义名称,主要出现在日志记录和JMX管理控制台中以识别池和池配置
healthCheckRegistry null 报告当前健康信息
poolName HikariPool-1 连接池的用户定义名称,主要出现在日志记录和JMX管理控制台中以识别池和池配置
idleTimeout 是允许连接在连接池中空闲的最长时间

建议:文章来源地址https://www.toymoban.com/news/detail-433597.html

  • minimumIdle,建议使用默认值,小于maximumPoolSize值。
  • 连接空闲时间idleTimeout生效,重发频率为60多秒,值可设为1分钟,减少空闲连接占用,尽快释放数据库连接。
  • 连接生命周期maxLifetime值设为10分钟,低于数据库超时时长,尽快释放数据库无效连接。
  • 增加连接池的用户定义名称。
  • 开启连接监测泄露leakDetectionThreshold方法,此属性控制在记录消息之前连接可能离开池的时间量,表明可能存在的连接泄漏。

示例

maven依赖

<!-- 主要增加 HikariCP 依赖 -->
<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
    <version>5.0.1</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
    <exclusions>
        <!-- 排除 tomcat-jdbc 以使用 HikariCP -->
        <exclusion>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-jdbc</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<!-- MySQL 驱动 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>${mysql.version}</version>
</dependency>

application.yml

spring:
  #配置数据源
  datasource:
    type: com.zaxxer.hikari.HikariDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/db_wego?useSSL=false&serverTimezone=UTC&characterEncoding=utf8&useUnicode=true
    username: root
    password: root
    hikari:
      # 是允许连接在连接池中空闲的最长时间
      minimum-idle: 5
      # 是允许连接在连接池中空闲的最长时间(以毫秒为单位)
      idle-timeout: 600000
      # 配置最大池大小
      maximum-pool-size: 10
      # 配置从池返回的连接的默认自动提交行为。默认值为true
      auto-commit: true
      # 连接池的名称
      pool-name: MyHikariCP
      # 池中连接关闭后的最长生命周期(以毫秒为单位)
      max-lifetime: 1800000
      # 是客户端等待连接池连接的最大毫秒数
      connection-timeout: 30000
      # 开启连接监测泄露
      leak-detection-threshold: 5000
      # 测试连接数据库
      connection-test-query: SELECT 1

到了这里,关于SpringBoot整合 HikariCP的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 换上 HikariCP 连接池,太快了!

    在我们平常的编码中,通常会将一些对象保存起来,这主要考虑的是对象的创建成本。 比如像线程资源、数据库连接资源或者 TCP 连接等,这类对象的初始化通常要花费比较长的时间,如果频繁地申请和销毁,就会耗费大量的系统资源,造成不必要的性能损失。 并且这些对象

    2024年02月10日
    浏览(28)
  • HikariCP连接池设置和监控

    SpringBoot 项目默认自动使用 HikariCP, 最近为了进行数据库session控制, 特意调小了缺省的 poolSize, 原本以为会自动生效, 经过压测发现还是使用默认的 poolSize. 原来的代码 DataSource 对象使用的是 Spring DataSource builder创建的, 需要修改为 HikariDataSource 来创建. 我直接使用 https://blog.csd

    2024年02月08日
    浏览(27)
  • 使用HikariCP连接池常用配置讲解及注意事项

    SpringCloud 中使用HikariPool 报错Possibly consider using a shorter maxLifetime value 对于以上几种错误,我经过查阅,众说纷纭,大部分解决了的都是(并不是长久之计) 按照提示缩短了maxLifetime到5分钟 增加测试查询语句connection-test-query 来解决问题,并没有实际的分析问题根源或者优化其

    2024年02月15日
    浏览(34)
  • 可观测性-Metrics-数据库连接池HikariCP监控

    HikariCP 其内部提供了 setMetricRegistry() 方法,让我们可以注入MetricRegistry来实现对连接池指标的收集。这样我们可以较为方便的监控连接池的运行状态。 添加依赖 示例 结果: 指标详解 对应的指标在 com.zaxxer.hikari.metrics.PoolStats 中。 指标 详解 hikaricp.connections 当前总连接数,包

    2024年02月06日
    浏览(28)
  • 弹性数据库连接池探活策略调研(一)——HikariCP

    数据库连接建立是比较昂贵的操作(至少对于 OLTP),不仅要建立 TCP 连接外还需要进行连接鉴权操作,所以客户端通常会把数据库连接保存到连接池中进行复用。连接池维护到弹性数据库(JED)的长连接,弹性数据库默认不会主动关闭客户端连接(除非报错),但一般客户端

    2024年02月10日
    浏览(32)
  • 零额外开销最快的数据库连接池?HikariCP 入门介绍

    从零开始手写 mybatis (三)jdbc pool 如何从零手写实现数据库连接池 dbcp? 万字长文深入浅出数据库连接池 HikariCP/Commons DBCP/Tomcat/c3p0/druid 对比 Database Connection Pool 数据库连接池概览 c3p0 数据池入门使用教程 alibaba druid 入门介绍 数据库连接池 HikariCP 性能为什么这么快? Apache

    2024年03月17日
    浏览(35)
  • Oracle 开发篇+Java通过HiKariCP访问Oracle数据库

    标签:HikariCP、数据库连接池、JDBC连接池、 释义:HikariCP 是一个高性能的 JDBC 连接池组件,号称性能最好的后起之秀,是一个基于BoneCP做了不少的改进和优化的高性能JDBC连接池。 ★ Java代码 ※ 如果您觉得文章写的还不错, 别忘了在文末给作者点个赞哦 ~

    2024年02月13日
    浏览(43)
  • Spring Boot 2.7.5 HikariCP 连接池多数据源配置

    当前项目遇到需要连接多个数据库的场景,此时需要引入多数据源了. 还有一些诸如以下的场景: 与第三方对接时,有些合作方并不会为了你的某些需求而给你开发一个功能,他们可以提供给你一个可以访问数据源的只读账号,你需要获取什么数据由你自己进行逻辑处理,这时

    2024年02月05日
    浏览(41)
  • JDBC常见的几种连接池使用(C3P0、Druid、HikariCP 、DBCP)(附上代码详细讲解)

    Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍JDBC常见的几种连接池使用(C3P0、Druid、HikariCP 、DBCP)以及部分理论知识 🍉 欢迎点赞  👍  收藏  ⭐ 留言评论  📝 私信必回哟 😁 🍉 博主收将持续更新学习记录获,友友们有任何问题可以在评论区留言 目录 ⭐什么是连接池? ⭐

    2024年02月03日
    浏览(41)
  • JDBC中C3P0、Druid、HikariCP 、DBCP连接池的jar包下载与IDEA配置

    连接池是应用程序与数据库之间的一个缓冲区,它存储了一定数量的空闲数据库连接,当应用程序需要连接数据库时,可以从连接池中获取一个可用连接,使用完毕后再将连接归还给连接池,从而避免了每次连接都需要创建和销毁连接的开销,提高了应用程序的性能和可伸缩

    2024年04月23日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包