阿里数据库连接池Druid配置整理,带注释

项目数据库连接池准备用Druid,但是网上搜的配置信息都不一样,都比较乱。

最终在官方GitHub文档上找到了各个配置项的说明,整理了一下,留着备忘。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# 数据库JDBC驱动
jdbc.driverClassName=com.mysql.jdbc.Driver
# 数据库链接字符串
jdbc.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8
# 用户名
jdbc.username=root
# 密码
jdbc.password=root
# 检测数据库链接是否有效用带SQL,必须配置
jdbc.validationQuery=SELECT 1
# 单位:秒,检测连接是否有效的超时时间。
3 底层调用jdbc Statement对象的void setQueryTimeout(int seconds)方法
jdbc.validationQueryTimeout=3
# 是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。
# 在mysql下建议关闭。
jdbc.poolPreparedStatements=false
# 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。
# 在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100
jdbc.maxPoolPreparedStatementPerConnectionSize=-1
# 初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时
jdbc.initialSize=3
# 最大连接池数量
jdbc.maxActive=10
# 已经不再使用,配置了也没效果
#jdbc.maxIdle=20
# 最小连接池数量
jdbc.minIdle=0
# 获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降。
# 如果需要可以通过配置useUnfairLock属性为true使用非公平锁。
jdbc.maxWait=60000
# 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
jdbc.testOnBorrow=false
# 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
jdbc.testOnReturn=false
# 建议配置为true,不影响性能,并且保证安全性。
# 申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
jdbc.testWhileIdle=true
# 1.Destroy线程会检测连接的间隔时间,如果连接空闲时间大于等于minEvictableIdleTimeMillis则关闭物理连接。
# 2.estWhileIdle的判断依据,详细看testWhileIdle属性的说明
jdbc.timeBetweenEvictionRunsMillis=60000
# 不再使用,一个DruidDataSource只支持一个EvictionRun
jdbc.numTestsPerEvictionRun=1800000
# 连接保持空闲而不被驱逐的最长时间,即连接的生存时间
jdbc.minEvictableIdleTimeMillis=300000
# 物理连接初始化的时候执行的sql
jdbc.connectionInitSqls=
# 当数据库抛出一些不可恢复的异常时,抛弃连接,根据dbType自动识别,不需要配
jdbc.exceptionSorter=
# Druid的强大之处,过滤器属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有:
# 监控统计用的filter:stat
# 日志用的filter:log4j
# 防御sql注入的filter:wall
jdbc.filters=filter:wall

#链接使用超过时间限制是否回收
jdbc.removeAbandoned=true
#超过时间限制时间(单位秒),目前为5分钟,如果有业务处理时间超过5分钟,可以适当调整。
jdbc.removeAbandonedTimeout=300
#链接回收的时候控制台打印信息,测试环境可以加上true,线上环境false。会影响性能。
jdbc.logAbandoned=false

常用数据库validationQuery检查语句

数据库 validationQuery
Oracle select 1 from dual
MySQL select 1
DB2 select 1 from sysibm.sysdummy1
MS SQL Server select 1
HSQLDB select 1 from INFORMATION_SCHEMA.SYSTEM_USERS
PostgreSQL select version()
Derby select 1
H2 select 1