8、SpringBoot整合hikari连接池

HikariCP 源于日语“光”的意思(和光速一样快),它是 SpringBoot 中默认的数据库连接池。

可以有效地减少数据库连接创建、销毁的资源消耗。

HikariCP 为什么快呢?

  • 它使用 FastList 替代 ArrayList,通过初始化的默认值,减少了越界检查的操作;

  • 优化并精简了字节码,通过使用 Javassist,减少了动态代理的性能损耗,比如使用 invokestatic 指令代替 invokevirtual 指令;

javassist是jboss的一个子项目,其主要的优点,在于简单,而且快速。直接使用java编码的形式,而不需要了解虚拟机指令,就能动态改变类的结构,或者动态生成类。

  • 实现了无锁的 ConcurrentBag,减少了并发场景下的锁竞争。

你平常会把连接池设置成多大呢?

很多同学认为,连接池的大小设置得越大越好,有的同学甚至把这个值设置成 1000 以上,这是一种误解。根据经验,数据库连接,只需要 20~50 个就够用了。

具体的大小,要根据业务属性进行调整,但大得离谱肯定是不合适的。

HikariCP 官方是不推荐设置 minimumIdle最小空闲 这个值的,它将被默认设置成和 maximumPoolSize 一样的大小。

如果你的数据库Server端连接资源空闲较大,不妨也可以去掉连接池的动态调整功能。

总体来说,当你遇到下面的场景,就可以考虑使用池化来增加系统性能:

  • 对象的创建或者销毁,需要耗费较多的系统资源;
  • 对象的创建或者销毁,耗时长,需要繁杂的操作和较长时间的等待;
  • 对象创建后,通过一些状态重置,可被反复使用。

将对象池化之后,只是开启了第一步优化。

要想达到最优性能,就不得不调整池的一些关键参数,合理的池大小加上合理的超时时间,就可以让池发挥更大的价值。和缓存的命中率类似,对池的监控也是非常重要的。

想看源码可以:HikariCP

具体配置:

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/springboot-cf
    username: root
    password: 123456
    type: com.zaxxer.hikari.HikariDataSource
    hikari:
      minimum-idle: 10 #最小空闲连接数量
      maximum-pool-size: 15 #连接池最大连接数,默认是10
      auto-commit: true #此属性控制从池返回的连接的默认自动提交行为,默认值:true
      idle-timeout: 30000 #空闲连接存活最大时间,默认600000(10分钟)
      pool-name: DataHikariCP #连接池名称
      max-lifetime: 1800000 #此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认1800000即30分钟
      connection-timeout: 30000 #数据库连接超时时间,默认30秒,即30000
      connection-test-query: SELECT 1
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring Boot中,整合数据连接池可以使用HikariCP作为默认的数据库连接池HikariCP是一款非常强大、高效的连接池,被称为"史上最快连接池"。在Spring Boot 2.0之后,使用默认的数据库连接池就是HikariCP,不需要再添加额外的依赖。 要整合数据连接池,首先需要导入HikariCP的坐标。在`pom.xml`文件中添加如下依赖: ``` <!-- 默认的数据源(HikariCP) --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> ``` 然后,需要修改配置文件`application.yml`或`application.properties`,配置数据源的相关信息,包括数据源的类型、驱动类型、连接地址、用户名和密码等。示例如下: ``` spring: datasource: type: com.zaxxer.hikari.HikariDataSource # 数据源的类型 driver-class-name: com.mysql.cj.jdbc.Driver # 数据源的驱动类型 url: jdbc:mysql://localhost:3306/imooc?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai # 数据源的连接地址 username: root # 数据源的用户名 password: root # 数据源的密码 ``` 这样就完成了Spring Boot与数据连接池整合。通过配置文件中的相关信息,Spring Boot将会自动创建HikariCP连接池,并使用该连接池进行数据库操作,提高数据库的执行效率。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [SpringBoot整合Druid连接池](https://blog.csdn.net/weixin_42522705/article/details/126574689)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [SpringBoot 整合 数据库连接池(Druid、HicariCP、C3P0等等)](https://blog.csdn.net/qq_53463544/article/details/126416981)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞四海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值