Spring Boot 4 配置 HikariCP 数据库连接池大小

Spring Boot JDBC PostgreSQL About 1,938 words

yaml

minimum-idle默认等于maximum-pool-size

maximum-pool-size默认为10

所以数据库连接池默认大小是10,且一直保持10个连接。

对于高并发场景,推荐使用固定大小的连接池。

对于管理后台等用户及使用频率不高的系统,推荐将连接的最小空闲数量减少,提供最大连接数量来应对突发的场景(如:批量上传,批量任务等)。

其余超时时间设置可以使用默认设置。

spring:
  datasource:
    url: jdbc:postgresql://localhost:5432/postgres
    driver-class-name: org.postgresql.Driver
    username: postgres
    password:
    hikari:
      minimum-idle: 1
      maximum-pool-size: 80

注意

corePoolSize

HikariCP没有像Tomcat JDBC那样的corePoolSize核心线程池的概念。

最大连接数

maximum-pool-size不要超过数据库的最大连接限制。

PostgreSQL为例,可以使用SQL查看最大连接数。

show max_connections;

查看数据库当前连接数。

select count(*) from pg_stat_activity where client_addr = '192.168.1.1';

源码

最大连接池默认是DEFAULT_POOL_SIZE,所以在数据库观测平台经常能看到一直有10个连接。

当没有设置minIdle时,构造HikariConfig对象时会默认将minIdle设置为-1

在获取连接时,会再次将minIdle设置为maxPoolSize的大小。

public class HikariConfig implements HikariConfigMXBean {

   private static final int DEFAULT_POOL_SIZE = 10;
   
   private volatile int maxPoolSize;
   private volatile int minIdle;
   
   public HikariConfig() {

      minIdle = -1;
      maxPoolSize = DEFAULT_POOL_SIZE;

   }

   private void validateNumerics() {
      // ...
      if (minIdle < 0 || minIdle > maxPoolSize) {
         minIdle = maxPoolSize;
      }
   }
   
   public void validate() {
      // ...
      validateNumerics();
      
   }

}

getConnection获取数据库连接时,会调用HikariConfigvalidate方法。

public class HikariDataSource extends HikariConfig implements DataSource, Closeable {

   @Override
   public Connection getConnection() throws SQLException {
   

      // See http://en.wikipedia.org/wiki/Double-checked_locking#Usage_in_Java
      HikariPool result = pool;
      if (result == null) {
         synchronized (this) {
            result = pool;
            if (result == null) {
               // HikariConfig 的 validate 方法
               validate();
               
            }
         }
      }
      
}

}

文档

https://github.com/brettwooldridge/HikariCP

Views: 12 · Posted: 2026-02-04

———         Thanks for Reading         ———

Give me a Star, Thanks:)

https://github.com/fendoudebb/LiteNote

扫描下方二维码关注公众号和小程序↓↓↓

扫描下方二维码关注公众号和小程序↓↓↓
Prev Post
Today In History
Browsing Refresh