Spring Boot 默认数据库连接池 HikariCP全文解析

 更新时间:2026年01月06日 11:18:13   作者:Knight_AL  
HikariCP是SpringBoot默认的高性能数据库连接池,通过合理配置可以显著提升系统性能,文章详细介绍了HikariCP的核心参数及最佳实践,,文章列举了常见的错误配置及其可能导致的问题,并推荐了适用于大多数中小型SpringBoot项目的稳定生产配置,感兴趣的朋友跟随小编一起看看吧

在 Spring Boot 2.x / 3.x 项目中,HikariCP 已经成为默认数据库连接池
但很多人对它的参数一知半解,甚至直接照抄配置,结果线上问题频发。

一、为什么要用数据库连接池?

每次访问数据库,如果都经历:

  1. 创建 TCP 连接
  2. MySQL 身份验证
  3. 执行 SQL
  4. 关闭连接

这些操作非常耗时,在并发场景下会严重拖慢系统性能。

👉 数据库连接池的作用就是:

  • 预先创建好一定数量的数据库连接
  • 请求来了直接复用
  • 用完放回池中
  • 避免频繁创建 / 销毁连接

二、什么是 HikariCP?

HikariCP 是一个高性能 JDBC 连接池实现,也是:

  • ✅ Spring Boot 官方默认连接池
  • ✅ 目前主流连接池中性能最优
  • ✅ 设计目标:快、轻量、简单

Spring Boot 3.x 中,哪怕你什么都不配置,底层默认用的就是它。

三、典型 Hikari 配置示例

spring:
  datasource:
    hikari:
      connection-test-query: SELECT 1
      connection-timeout: 60000
      idle-timeout: 500000
      max-lifetime: 540000
      maximum-pool-size: 10
      minimum-idle: 5
      pool-name: AiReportHikariPool

下面我们逐个参数拆开讲

四、Hikari 核心参数详解

1️⃣ connection-test-query

connection-test-query: SELECT 1

作用:

  • 用于检测数据库连接是否可用

是否必须?

  • ❌ 大多数情况下不需要
  • Hikari 默认使用 JDBC4 的 isValid() 方法,性能更好

建议:

# MySQL / PostgreSQL 可直接删除
# connection-test-query: SELECT 1

2️⃣ connection-timeout(非常重要)

connection-timeout: 60000

作用:

  • 从连接池获取连接时,最多等待多久
  • 超过时间直接抛异常

风险:

  • 时间过长(60 秒)会导致线程长时间阻塞
  • 在高并发下可能拖垮整个服务

推荐值:

connection-timeout: 30000

3️⃣ idle-timeout

idle-timeout: 500000

作用:

  • 空闲连接在池中能存活的最长时间
  • 超时后会被回收

建议:

idle-timeout: 300000  # 5 分钟

4️⃣ max-lifetime(非常重要)

max-lifetime: 540000

作用:

  • 一个连接在池中的最大生命周期
  • 到期后强制销毁并重建

为什么需要?

  • 防止数据库(如 MySQL)主动断开“老连接”

重要规则:

max-lifetime > idle-timeout

推荐值:

max-lifetime: 1800000  # 30 分钟

5️⃣ maximum-pool-size

maximum-pool-size: 10

作用:

  • 连接池允许的最大连接数

经验值:

场景推荐
单体应用10–20
微服务5–15
高并发需压测

❗ 并不是越大越好,数据库本身也有连接上限

6️⃣ minimum-idle

minimum-idle: 5

作用:

  • 保持的最小空闲连接数

建议:

  • 一般设置为 maximum-pool-size 的一半左右
  • 不要和最大连接数相同,否则连接永不释放

7️⃣ pool-name

pool-name: AiReportHikariPool

作用:

  • 连接池名称
  • 仅用于日志和监控识别

建议:

  • 给每个服务一个有意义的名字,方便排查问题

五、常见错误配置总结

❌ 连接生命周期太短
❌ connection-timeout 设太大
❌ max-lifetime 小于 idle-timeout
❌ 盲目把 pool-size 调很大

这些都会导致:

  • 连接频繁重建
  • 吞吐下降
  • 数据库压力异常

六、推荐的「稳定生产配置」

spring:
  datasource:
    hikari:
      connection-timeout: 30000
      idle-timeout: 300000
      max-lifetime: 1800000
      maximum-pool-size: 10
      minimum-idle: 5
      pool-name: AiReportHikariPool

👉 适合 90% 中小型 Spring Boot 项目

七、总结

HikariCP 的核心思想不是“多”和“复杂”,
而是“刚刚好”和“足够快”。

到此这篇关于Spring Boot 默认数据库连接池 HikariCP全文解析的文章就介绍到这了,更多相关springboot数据库连接池 HikariCP内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Maven导入依赖时报错如何解决

    Maven导入依赖时报错如何解决

    这篇文章主要介绍了Maven导入依赖时报错如何解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • Java中处理日期时间的几种操作技巧

    Java中处理日期时间的几种操作技巧

    日期和时间是几乎所有应用程序中都会遇到的问题,从简单的显示当前时间,到复杂的日期计算和时区处理,日期时间操作是开发中不可避免的一部分,Java提供了不同的工具来帮助我们处理日期和时间,本文为大家详细说说,需要的朋友可以参考下
    2026-01-01
  • Java获取七牛云存储空间中图片外链

    Java获取七牛云存储空间中图片外链

    本文主要介绍了Java获取七牛云存储空间中图片外链,需要获取在七牛云中存储的所有图片,并返回外链地址,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • Java中JFrame实现无边框无标题方法

    Java中JFrame实现无边框无标题方法

    这篇文章主要介绍了Java中JFrame实现无边框无标题方法,本文直接给出代码实例,需要的朋友可以参考下
    2015-05-05
  • SpringBoot中的Logging详解

    SpringBoot中的Logging详解

    这篇文章主要介绍了SpringBoot中的Logging详解,log配置可能是被忽视的一个环节,一般的项目中日志配置好了基本上很少去改动,我们常规操作是log.info来记录日志内容,很少会有人注意到springBoot中日志的配置,需要的朋友可以参考下
    2023-09-09
  • Java按值传递和按址传递(面试常见)

    Java按值传递和按址传递(面试常见)

    这篇文章主要介绍了Java按值传递和按址传递(面试常见)知识,在面试笔试题中经常会遇到,今天小编给大家详细介绍下,需要的朋友可以参考下
    2017-02-02
  • Spring Boot AOP与事务、异常处理交互的问题小结

    Spring Boot AOP与事务、异常处理交互的问题小结

    文章介绍了Spring Boot中AOP与事务、异常处理的交互,包括@Transactional注解的处理机制、事务与AOP的结合、切面执行顺序以及异常通知与事务的交互,通过示例和流程图,详细说明了在多切面环境下,通知的执行顺序及其实现原理,感兴趣的朋友跟随小编一起看看吧
    2025-12-12
  • 如何使用两个栈实现队列Java

    如何使用两个栈实现队列Java

    这篇文章主要介绍了如何使用两个栈实现队列Java,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • 基于Springboot实现定时发送邮件功能

    基于Springboot实现定时发送邮件功能

    这篇文章主要为大家详细介绍了基于Springboot实现定时发送邮件功能的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-03-03
  • 新手也能看懂的SpringBoot异步编程指南(简单易懂)

    新手也能看懂的SpringBoot异步编程指南(简单易懂)

    这篇文章主要介绍了新手也能看懂的SpringBoot异步编程指南(简单易懂),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10

最新评论