Spring Boot 4 数据源连接池配置
固定基线
当前项目在 Spring Boot 4 生态下,运行时连接池统一使用 Hikari。
主库 / 固定业务库统一采用以下公共基线:
spring:
datasource:
dynamic:
lazy: false
hikari:
minimum-idle: 0
maximum-pool-size: 20
idle-timeout: 60000
配置含义如下:
lazy: false- 启动阶段直接初始化数据源
- 数据库配置错误或连通性异常会在启动时直接暴露
minimum-idle: 0- 空闲服务不长期保留数据库连接
maximum-pool-size: 20- 作为当前项目统一连接池上限
idle-timeout: 60000- 超出最小空闲数的连接空闲 60 秒后回收
动态租户库基线
按 tenantId 动态新增的租户库连接池,不沿用主库的固定空闲连接策略,统一采用以下基线:
spring.datasource.sharding.minimum-idle: 0spring.datasource.sharding.idle-timeout: 60000spring.datasource.sharding.lazy: true
动态租户库配置规则如下:
minimum-idle: 0- 不为每个已访问租户长期保留固定空闲连接
idle-timeout: 60000- 空闲连接在 60 秒后回收
lazy: true- 先注册数据源路由,首次实际访问时再建立物理连接
固定实现要求
当前代码层固定要求如下:
- 动态租户库创建时,单独下发上述动态租户池参数
- YAML Provider 负责注册
master,JDBC Provider 只负责注册数据源表中的扩展数据源 - 同一个数据源名称只允许由一个 Provider 创建
- JDBC 连通性校验统一使用
try-with-resources - 连通性校验连接在校验完成后立即关闭,不允许保留为悬挂连接
部署规则
公共配置统一放在所有服务都会加载的 Nacos 公共配置中,例如:
application-dev.ymlapplication-test.ymlapplication-prod.yml
如需对高压服务单独放大连接池,只覆盖对应服务自己的 maximum-pool-size,不要改动态租户库基线。
数据库容量要求
MySQL 连接数需要覆盖以下总量:
所有固定业务库连接池上限之和 + 动态租户库运行期峰值连接 + 其他客户端连接 + 余量
如果数据库同时被其他系统共用,需要单独核算连接预算。