配置
Druid 连接池核心配置详解:优化数据库连接管理
Druid 是阿里巴巴开源的高性能数据库连接池,兼具连接管理、监控、SQL 防注入等功能,广泛应用于 Java 后端开发。合理配置 Druid 连接池参数对系统性能、稳定性至关重要。本文将基于官方配置表,深入解析核心参数的作用、默认值及最佳实践,帮助你针对性优化连接池配置。
基础配置:连接建立与身份验证
核心身份认证参数
| 配置项 | 缺省值 | 作用与最佳实践 |
|---|---|---|
name |
自动生成(DataSource-哈希值) |
用于多数据源场景的区分标识,监控时便于识别。1.0.5 版本前存在配置 bug,建议 1.0.5+ 版本使用。 |
url |
无(必填) | 数据库连接 URL(如 jdbc:mysql://localhost:3306/db),需包含数据库名、编码等参数(如 useUnicode=true&characterEncoding=utf8)。 |
username |
无(必填) | 数据库登录用户名,建议使用最小权限账号(仅授予必要操作权限)。 |
password |
无(必填) | 数据库登录密码,生产环境需加密存储(可通过 Druid 的 ConfigFilter 解密)。 |
driverClassName |
自动识别 | 数据库驱动类名(如 com.mysql.cj.jdbc.Driver)。Druid 可通过 url 自动识别,建议显式配置以避免歧义。 |
配置示例
# 基础连接配置
spring.datasource.druid.name=primary-db
spring.datasource.druid.url=jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
spring.datasource.druid.username=app_user
spring.datasource.druid.password=EncryptedPassword # 建议加密
spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver
连接池大小与资源控制
连接池大小直接影响系统并发能力和资源占用,需根据业务压力合理配置。
核心池大小参数
| 配置项 | 缺省值 | 作用与最佳实践 |
|---|---|---|
initialSize |
0 | 初始化连接数。建议设置为 5-10(避免首次请求耗时过长),但不宜过大(启动时建立连接耗时)。 |
maxActive |
8 | 最大连接数。需根据数据库最大连接数(如 MySQL 默认 max_connections=151)和业务并发量调整,建议 20-50(避免超过数据库承载上限)。 |
minIdle |
无默认值 | 最小空闲连接数。建议设置为 5-10,避免频繁创建 / 销毁连接(空闲连接可复用)。 |
maxWait |
无默认值 | 获取连接的最大等待时间(毫秒)。建议设置 3000-5000,超时抛出异常,避免线程无限阻塞。 |
配置原则
- 避免过度配置:
maxActive不应超过数据库允许的最大连接数(否则会报too many connections错误); - 空闲连接复用:
minIdle确保一定数量的热连接,减少连接建立开销; - 突发流量缓冲:
maxActive需覆盖业务峰值并发(如通过压测确定合理值)。