这里整理了一下druid中可以配置的参数以及含义,大家参考的时候注意druid版本,可能有些版本有些参数无效。
name :数据源名称 如果存在多个数据源,监控的时候可以通过名字来区分开来 如果没有配置,将会生成一个名字,格式是"DataSource-"+System.identityHashCode(this)
jdbcUrl(必配) :连接数据库的 url,不同数据库不一样
username(必配) 链接数据库的用户
password (必配)连接数据库的密码。如果你不希望密码直接写在配置文件中,可以使用ConfigFilter。详细看这里:https://github.com/alibaba/druid/wiki/%E4%BD%BF%E7%94%A8ConfigFilter
driverClassName(必配) :数据库驱动类 可配可不配,如果不配置 druid 会根据 url 自动识别 dbType,然后选择相应的 driverClassName(建议配置下)
initialSize(必配) :初始化时建立物理连接的个数,初始化发生在显示调用 init 方法,或者第一次 getConnection 时
maxIdle :已经不再使用,配置了也没效果
maxWait (必配):获取连接时最大等待时间,单位毫秒 配置了 maxWait 之后,缺省启用公平锁,并发效率会有所下降(可以通过配置 useUnfairLock=true 使用非公平锁)
connectTimeout(必配) 链接数据库链接超时时间,单位是毫秒
socketTimeout(必配) socket链接数据库链接超时时间,单位是毫秒
maxActive(必配):线程池中最大连接数,
minEvictableIdleTimeMillis (必配)(默认30分钟):连接保持空闲而不被驱逐的最长存活时间。Destory线程中如果检测到当前连接的最后活跃时间和当前时间的差值大于minEvictableIdleTimeMillis,则关闭当前连接。这个参数和timeBetweenEvictionRunsMillis参数有点冲突,可默认不管这个参数;
timeBetweenEvictionRunMillis (必配):间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 Destory 线程会检测连接的间隔时间
maxOpenPreparedStatements :要启用 PSCache,必须配置大于0 当大于 0 时,poolPreparedStatements 自动触发修改为 true 在 Druid 中,不会存在 Oracle 下 PSCache 占用内存过多的问题,可以把这个数值配置大一点,比如 100
testOnBorrow :申请连接时执行 validationQuery 检测连接是否有效,做了这个配置会降低性能
testOnReturn :归还连接时执行 validationQuery 检测连接是否有效,做了这个配置会降低性能
testWhileIdle :建议配置为 true,不影响性能,并且保证安全性 ·申请连接的时候检测,如果空闲时间大于 timeBetweenEvictionRunMills,执行 validationQuery 检测连接是否有效 都不会其作用。在mysql中通常为select 'x',在oracle中通常为 select 1 from dual (默认false)是一个检测配置项:建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效;
numTestsPerEvictionRun :废弃,一个 DruidDataSource 只支持一个 EvicationRun
connectionInitSqls :物理连接初始化的时候执行 sql
exceptionSorter :当数据库抛出一些不可恢复的异常时,抛弃连接 根据dbType自动识别 当数据库抛出一些不可恢复的异常时,抛弃连接
filters :通过别名的方式配置扩展插件,属性类型是字符串 常用的插件有:监控统计用的 filter(stat:监控统计,log:4:日志记录,wall:防御sql注入)
proxyFilters :类型是 List<com.alibaba.druid,filter.Filter>,如果同时配置 filter 和 proxyFilters,是组合关系(并非)
minIdle:线程池最小空闲数,Druid会定期扫描连接数情况,如果扫描的值大于该值就关闭多余的连接数,小于就创建符合要求的连接数;这个参数的主要用处是突然有大量的请求的时候,就会创建新的连接数,这是个比较耗时的操作;
timeBetweenEvictionRunsMillis(默认60秒):判断连接池的连接空闲数是否大于minIdle,如果是则关闭多余的连接数,少的就补上,(如果当前连接池中某个连接在空闲了timeBetweenEvictionRunsMillis时间后仍然没有使用,则被物理性的关闭掉); 执行validationQuery检测连接是否有效。 有两个含义:1) Destroy线程会检测连接的间隔时间 2) testWhileIdle的判断依据,详细看testWhileIdle属性的说明
removeAbandoned(默认false):如果连接泄露,是否需要回收泄露的连接;那么在getNumActive()快要到getMaxActive()的时候,系统会进行无效的Connection的回收,回收的 Connection为removeAbandonedTimeout(默认300秒)中设置的秒数后没有使用的Connection; 对于建立时间超过removeAbandonedTimeout的连接强制关闭
removeAbandonedTimeout(默认300秒):设置druid 强制回收连接的时限,当程序从池中get到连接开始算起,druid将强制回收该连接,单位秒 指定连接建立多长时间就需要被强制关闭
logAbandoned:如果回收了泄露的连接,是否要打印一条log,默认false; 指定发生removeabandoned的时候,是否记录当前线程的堆栈信息到日志中
removeAbandonedTimeoutMillis(默认5分钟):连接回收的超时时间;设置了removeAbandoned为true,Druid会定期检查线程池溢出的情况,如果不是运行状态,且超过设置的时间就会被回收;
maxEvictableIdleTimeMillis: 最大空闲时间 单位毫秒,默认7小时
validationQuery:用来检测连接是否有效的sql,如果validationQuery为空,那么testOnBorrow、testOnReturn、testWhileIdle这三个参数都不会起作用,因为这三个参数都是通过执行参数validationQuery指定的SQL来验证数据库连接的有效性,配置参考validationQuery=SELECT 1
maxPoolPrepareStatementPerConnectionSize: 20 每个连接最多缓存多少个SQL;
keepAlive(默认关闭):初始化连接池时会填充到minIdle数量,连接池中的minIdle数量以内的连接,空闲时间超过minEvictableIdleTimeMillis,则会执行keepAlive操作,打开会一直保持minIdle的数量值;
poolPreparedStatements false 是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql5.5以下的版本中没有PSCache功能,建议关闭掉。5.5及以上版本有PSCache,建议开启。 是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。
notFullTimeoutRetryCount: 3 #池内借出的连接 + 可用连接 < 最大连接数,则进行重试操作次数,默认0
logSlowSql 是否打印慢sql ,true或者false
slowSqlMillis: 10
还在收集整理中。。。