配色: 字号:
配置_DruidDataSource
2017-03-28 | 阅:  转:  |  分享 
  
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,是组合关系,并非替换关系
献花(0)
+1
(本文系关平个人图...首藏)