Java生态中最流行的数据库连接池hikaricp
HikariCP 是目前 Java 生态中最流行的数据库连接池,Spring Boot 2.x 之后默认就是它。
为什么选 HikariCP?
- 性能极高 — 号称”最快的连接池”,比 Druid、DBCP、C3P0 都快。核心原因是代码精简(不到 20KB)、去掉了所有不必要的抽象层。
- 零开销 — 内部用字节码增强(Byte Buddy)代替反射, getConnection() 路径极短
- 可靠 — 被 Spring Boot 官方选定为默认连接池,社区活跃,bug 修复快
- 连接验证高效 — 用
connectionTestQuery或isValid()API 做轻量检测,不会频繁打数据库
核心配置项(application.yml 示例):
1 | spring: |
关键参数建议:
| 参数 | 推荐值 | 说明 |
|---|---|---|
maximum-pool-size |
CPU核心数 + 1 | 不是越大越好,太大反而争抢锁 |
connection-timeout |
30000ms | 别设太低,否则容易报错 |
idle-timeout |
最大存活时间的 60% | 释放无用连接 |
max-lifetime |
30分钟 | 小于数据库的 wait_timeout |
工作原理简述:
- 应用启动时创建
minimum-idle个空闲连接 - 请求来了就从池中借连接,用完归还
- 池满时新请求等待
connection-timeout,超时抛异常 - 空闲连接超过
idle-timeout被回收 - 连接超过
max-lifetime强制销毁重建(防数据库侧断开)
Spring Boot 自动装配里已经内置了 HikariCP 的配置类 HikariDataSourceAutoConfiguration,所以只要配了 spring.datasource.*,它自动就用 HikariCP,不需要额外引入依赖。