Web 项目数据库连接参数配置 – Druid
1. datasource
username: root
password: 123456
url: jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
2. durid
# 时间单位毫秒
# 启动程序时,在连接池中初始化多少个连接(10-50已足够) def 0
initial-size: 10
# 最小连接数 回收空闲连接时,将保证至少有minIdle个连接.(与initialSize相同) def 0
min-idle: 10
# 最大连接数 def 8
max-active: 20
# 最大等待时间 程序向连接池中请求连接时, 超过后,认为本次请求失败 设置-1时表示无限等待 def -1
max-wait: 6000
# 检查空闲连接的频率, 非正整数时表示不进行检查 def 60000
time-between-eviction-runs-millis: 60000
# 回收空闲连接最小时间间隔 池中某个连接的空闲时长达到该值后, 连接池在下次检查空闲连接时,将回收该连接, 要小于防火墙超时设置 def 1800000
min-evictable-idle-time-millis: 300000
# 检查池中的连接是否为可用的SQL语句, drui会连接到数据库执行该SQL, 为空时以下三个配置均无效 def null
validationQuery=SELECT 1
# 当程序请求连接,池在分配连接时,是否先检查该连接是否有效。def false,建议开启,不影响性能
testWhileIdle=true
# def true,开启后会降低性能
testOnBorrow=false
# def false,开启后会降低性能
testOnReturn=false
# PSCache(mysql5.5以下没有PSCache功能,建议关闭掉, 5.5及以上有PSCache,建议开启) def false
poolPreparedStatements=true
# 每个连接最多缓存多少个SQL, 大于0时,poolPreparedStatements自动为true, def -1
maxPoolPreparedStatementPerConnectionSize=20
# 配置扩展插件:stat-监控统计,log4j-日志,wall-防火墙(防止SQL注入),去掉后,监控界面的sql无法统计
filters=stat
# 服务器因连接超时卡顿|卡死
# 是否自动回收超时连接 def false
removeAbandoned=true
# 超时时间(单位:s)
removeAbandonedTimeout=180
# 连接出错后重试时间间隔 def 500
timeBetweenConnectErrorMillis=500
# 连接错误后重试次数 def 1
connectionErrorRetryAttempts=1
数据库连接池在初始化的时候会创建initialSize个连接,当有数据库操作时,会从池中取出一个连接;
如果当前池中正在使用的连接数等于maxActive,则会等待一段时间,等待其他操作释放掉某一个连接,如果这个等待时间超过了maxWait,则会报错;
如果当前正在使用的连接数没有达到maxActive,则判断当前是否空闲连接,如果有则直接使用空闲连接,如果没有则新建立一个连接。
在连接使用完毕后,不是将其物理连接关闭,而是将其放入池中等待其他操作复用;
如果当前的总的连接数少于miniIdle,则会建立新的空闲连接,以保证连接数得到miniIdle;
如果当前连接池中某个连接在空闲了timeBetweenEvictionRunsMillis时间后任然没有使用,则被物理性的关闭掉;