关于连接池之mysql篇

JDBC 连接池

参数名称 推荐配置 描述
user - 用户名
password - 密码
useSSL false 是否使用 SSL 加密连接,默认 true
allowPublicKeyRetrieval true 让客户端自动从服务器请求公钥,默认 false
useAffectedRows true 执行 UPDATE/DELETE 时,设为 true 则返回“实际修改的行数”,默认 false 返回“匹配行数”
serverTimezone UTC 字符编码,推荐使用新参数 connectionTimeZone
autoReconnect true 连接失效时是否自动重连,默认 false
failOverReadOnly false 故障转移后是否设为只读模式,默认 true
maxReconnects 10 autoReconnect=true 时的最大重试次数,默认 3
socketTimeout 60000 Socket 读写超时(毫秒),默认 0=无超时
connectTimeout 10000 Socket 连接超时(毫秒),默认 0=无超时
loadBalanceStrategy bestResponseTime 决定驱动如何从一群主机中选择一个来处理请求,默认 random

DBCP 连接池

参数名称 推荐配置 描述
username - 用户名
password - 密码
url - URL
driverClassName - 驱动类名
minIdle - 最小连接数,默认0
initialSize - 初始化连接数,默认0
maxTotal - 最大连接数,默认8
maxWaitMillis - 获取连接超时时间,单位ms
maxIdle - 最大空闲连接,默认8

C3P0 连接池

参数名称 推荐配置 描述
user - 用户名
password - 密码
jdbcUrl - URL
driverClass - 驱动类名
minPoolSize - 最小连接数,默认3
initialPoolSize - 初始化连接数,默认3
maxPoolSize - 最大连接数,默认15
maxIdleTime - 获取连接超时时间,单位s
acquireRetryAttempts - 获取连接失败后的重连次数
acquireRetryDelay - 获取连接失败后重连的间隔时间

Druid 连接池

参数名称 推荐配置 描述
username - 用户名
password - 密码
url - URL
driverClassName - 驱动类名
minIdle 5 最小连接数,默认0
initialSize 5 初始化连接数,默认0
maxActive 20 最大连接数,默认8,可根据实际情况调整,机器多则每台尽量配置小点,相反就多点,但最大不允许超过30
maxWait 15000 获取连接超时时间,单位ms
testOnBorrow false 配置从连接池获取连接时,是否检查连接有效性,默认true
testWhileIdle true 获取连接后是否超时检测,默认false
timeBetweenEvictionRunsMillis 15000 连接有效性检测时间,单位ms
testOnReturn false 配置向连接池归还连接时,是否检查连接有效性,默认false
minEvictableIdleTimeMillis 300000 配置一个连接在连接池中的最小生存时间,单位ms
maxEvictableIdleTimeMillis 600000 配置一个连接在连接池中的最大生存时间,单位ms
validationQuery select 1
keepAlive true
phyMaxUseCount 100000
remove-abandoned true 开启连接池回收
remove-abandoned-timeout 300 超时连接回收时间,单位s

HikariCP 连接池

参数名称 推荐配置 描述
username - 用户名
password - 密码
jdbcUrl - URL
minimumIdle 5 池中最小空闲连接数量,默认10
maximumPoolSize 20 池中最大连接数(包括空闲和正在使用的连接),默认10
maxLifetime 1800000 默认1800000毫秒
connectionTimeout 60000 连接超时时间,默认30000毫秒
validationTimeout - 默认5000毫秒
loginTimeout - 默认30
idleTimeout 300000 默认600000毫秒
cachePrepStmts true xxx
isAutoCommit true 默认true
  • 补:2025.12.09 上百个java后台导致mysql将近4000个sleep心跳连接(总共4100),如下是优化之后(从4100减到2500)的 HikariCP 连接池配置,仅供参考

注:minimum-idle 默认与 maximum-pool-size 一致(默认10),这个才是连接过多的核心

spring.datasource.hikari.connection-timeout=60000
spring.datasource.hikari.maximum-pool-size=20
spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.idle-timeout=300000
spring.datasource.hikari.max-lifetime=1800000
spring.datasource.hikari.auto-commit=true
spring.datasource.hikari.validation-timeout=5000
Copyright © www.sqlfans.cn 2021 - 2026 All Right Reserved更新时间: 2026-07-10 16:04:00

results matching ""

    No results matching ""