DruidDataSource配置配置_DruidDataSource参考配置以下是一个参考的连接池配置:urce"class="com.alibaba.druid.pool.DruidDataSource"init-method= "init"destroy-method="close">< propertyname="url"value="${jdbc_url}"/>me"value="${jdbc_user}"/>bc_password}"/>ze"value="1"/>name="maxActive"value="20"/>name="maxWait"value="60000"/>00"/>leIdleTimeMillis"value="300000"/>ry"value="SELECT''x''"/>rue"/>name="testOnReturn"value="false"/>>e="20"/>e="stat"/>通常来说,只需要修改initialSize、minIdle、maxActive。如果用Or acle,则把poolPreparedStatements配置为true,mysql可以配置为false。分库分表较多的数据库,建 议配置为false。DBCP迁移DruidDataSource的配置是兼容DBCP的。从DBCP迁移到DruidDataSourc e,只需要修改数据源的实现类就可以了。DBCP的数据库连接池的实现是:org.apache.commons.dbcp.BasicD ataSource替换为:com.alibaba.druid.pool.DruidDataSource如果需要使用Druid的其他 配置,可以参考https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_D ruidDataSource%E5%8F%82%E8%80%83%E9%85%8D%E7%BD%AE例子:taSource"class="com.alibaba.druid.pool.DruidDataSource"destroy- method="close">pertyname="username"value="${jdbc_user}"/>sword"value="${jdbc_password}"/>="stat"/>e="initialSize"value="1"/>0"/>etweenEvictionRunsMillis"value="60000"/>ctableIdleTimeMillis"value="300000"/>nQuery"value="SELECT''x''"/>e="true"/>rtyname="testOnReturn"value="false"/>aredStatements"value="true"/>atementPerConnectionSize"value="20"/>IVLAUE的DBCP数据源配置:--DG库数据源-->.commons.dbcp.BasicDataSource"destroy-method="close">ame="driverClassName"value="oracle.jdbc.driver.OracleDriver"/>ropertyname="url"value="jdbc:oracle:thin:@(DESCRIPTION=(ADDRE SS=(PROTOCOL=TCP)(HOST=10.0.97.31)(PORT=1521))(CONNECT_DA TA=(SERVER=DEDICATED)(SERVICE_NAME=ivldb)))"/>e="username"value="CHGSHS"/>7PdozKHqCpjmX"/>"10"/> rty>erty> property>e="5000">elect1fromdual"/>< propertyname="testWhileIdle"value="true"/>timeBetweenEvictionRunsMillis"value="180000"/>>DruidDataSource配置属性列表DruidDataSource配置兼容DBCP,但个别配置的语意有所区别。配置缺省值说 明name配置这个属性的意义在于,如果存在多个数据源,监控的时候可以通过名字来区分开来。如果没有配置,将会生成一个名字,格式是:" DataSource-"+System.identityHashCode(this).?另外配置此属性至少在1.0.5版本中是 不起作用的,强行设置name会出错http://blog.csdn.net/lanmo555/article/details/41 248763详情-点此处。url连接数据库的url,不同数据库不一样。例如:mysql:jdbc:mysql://10.20. 153.104:3306/druid2?oracle:jdbc:oracle:thin:@10.20.149.85:1521: ocnautousername连接数据库的用户名password连接数据库的密码。如果你不希望密码直接写在配置文件中,可以使用Co nfigFilter。详细看这里:https://github.com/alibaba/druid/wiki/%E4%BD%BF% E7%94%A8ConfigFilterdriverClassName根据url自动识别这一项可配可不配,如果不配置druid会根 据url自动识别dbType,然后选择相应的driverClassNameinitialSize0初始化时建立物理连接的个数。初始 化发生在显示调用init方法,或者第一次getConnection时maxActive8最大连接池数量maxIdle8已经不再使用 ,配置了也没效果minIdle最小连接池数量maxWait获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平 锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁。poolPreparedStat ementsfalse是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨 大,比如说oracle。在mysql下建议关闭。maxOpenPreparedStatements-1要启用PSCache,必须配 置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下P SCache占用内存过多的问题,可以把这个数值配置大一些,比如说100validationQuery用来检测连接是否有效的sql, 要求是一个查询语句。如果validationQuery为null,testOnBorrow、testOnReturn、testWh ileIdle都不会其作用。validationQueryTimeout单位:秒,检测连接是否有效的超时时间。底层调用jdbcS tatement对象的voidsetQueryTimeout(intseconds)方法testOnBorrowtrue申请连 接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。testOnReturnfalse归还连接时执行v alidationQuery检测连接是否有效,做了这个配置会降低性能testWhileIdlefalse建议配置为true,不影响 性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行vali dationQuery检测连接是否有效。timeBetweenEvictionRunsMillis1分钟(1.0.14)有两个含义 :1)Destroy线程会检测连接的间隔时间,如果连接空闲时间大于等于minEvictableIdleTimeMillis则关闭 物理连接2)testWhileIdle的判断依据,详细看testWhileIdle属性的说明numTestsPerEvicti onRun不再使用,一个DruidDataSource只支持一个EvictionRunminEvictableIdleTimeMillis30分钟(1.0.14)连接保持空闲而不被驱逐的最长时间connectionInitSqls物理连接初始化的时候执行的sqlexceptionSorter根据dbType自动识别当数据库抛出一些不可恢复的异常时,抛弃连接filters属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有:监控统计用的filter:stat日志用的filter:log4j防御sql注入的filter:wallproxyFilters类型是List,如果同时配置了filters和proxyFilters,是组合关系,并非替换关系 |
|