连接池配置

一般而言,常用的数据库连接池有DBCP,C3P0, proxool,另外还有一个出道迟一些但是性能比前面这3个又好许多的连接池BoneCp。

DBCP是apache组织的一个开源的连接池项目,不过现在好像已经停止维护了,据说问题比较多,连接死锁问题比较严重。

C3P0是hibernate官方指定的数据库连接池工具,性能稳定,不过占用资源相对较多。

Proxool据说性能比从C3P0好一些,消耗资源也少。

BoneCp连接池 网上有测试数据显示其运行效率可以达到C3P0、Proxool的25倍,并且稳定性也不错,所以被许多开发者推崇!但是要求jdk1.5+。

只可惜我的开发环境是基于jdk1.4的,所以对BoneCp无法测试了。

Proxool也没有测试,因为现在基本都是新的基于jdk1.5+的版本。

DBCP连接池配置:

  1.  <bean id="dataSource"  
  2.           class="org.apache.commons.dbcp.BasicDataSource"  
  3.           destroy-method="close">  
  4.         <property name="driverClassName" value="com.mysql.jdbc.Driver"/>  
  5.         <property name="url" value="jdbc:mysql://192.168.0.109:3306/test?useUnicode=true&characterEncoding=UTF-8"/>  
  6.         <property name="username" value="root"/>  
  7.         <property name="password" value="root"/>  
  8.         <!--maxActive: 最大连接数量-->    
  9.         <property name="maxActive" value="150"/>  
  10.         <!--minIdle: 最小空闲连接-->    
  11.         <property name="minIdle" value="5"/>  
  12.         <!--maxIdle: 最大空闲连接-->    
  13.         <property name="maxIdle" value="20"/>  
  14.         <!--initialSize: 初始化连接-->    
  15.         <property name="initialSize" value="30"/>  
  16.         <!-- 连接被泄露时是否打印 -->  
  17.         <property name="logAbandoned" value="true"/>  
  18.         <!--removeAbandoned: 是否自动回收超时连接-->    
  19.         <property name="removeAbandoned"  value="true"/>  
  20.         <!--removeAbandonedTimeout: 超时时间(以秒数为单位)-->    
  21.         <property name="removeAbandonedTimeout" value="10"/>  
  22.         <!--maxWait: 超时等待时间以毫秒为单位 1000等于60秒-->  
  23.         <property name="maxWait" value="1000"/>  
  24.         <!-- 在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位. -->  
  25.         <property name="timeBetweenEvictionRunsMillis" value="10000"/>  
  26.         <!--  在每次空闲连接回收器线程(如果有)运行时检查的连接数量 -->  
  27.         <property name="numTestsPerEvictionRun" value="10"/>  
  28.         <!-- 1000 * 60 * 30  连接在池中保持空闲而不被空闲连接回收器线程-->  
  29.         <property name="minEvictableIdleTimeMillis" value="10000"/>  
  30.     <property name="validationQuery" value="SELECT NOW() FROM DUAL"/>  
  31.     </bean>  

C3P0连接池配置:

<beanid="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"destroy-method="close">

        <propertyname="driverClass"  value="oracle.jdbc.OracleDriver"/> 

        <propertyname="jdbcUrl"      value="jdbc:oracle:thin:@168.9.202.49:1521:TEST"/> 

        <propertyname="user"         value="TEST" /> 

        <propertyname="password"     value="TEST" /> 

      <propertyname="acquireIncrement"       value="5" /> 

        <propertyname="acquireRetryAttempts"      value="10" /> 

        <propertyname="acquireRetryDelay"         value="3000" /> 

        <propertyname="autoCommitOnClose"         value="true" /> 

        <propertyname="breakAfterAcquireFailure"  value="false"/> 

        <propertyname="checkoutTimeout"value="10000" />

        <propertyname="initialPoolSize"value="6" /> 

        <propertyname="maxIdleTime"     value="10000" /> 

        <propertyname="maxPoolSize"     value="10" />

      <propertyname="minPoolSize"     value="1" />  

        <propertyname="maxStatements"   value="0" /> 

        <propertyname="numHelperThreads"value="3" /> 

        <propertyname="propertyCycle"   value="600" /> 

      <propertyname="maxStatementsPerConnection"   value="0" />

</bean>

Proxool连接池配置:

 

<bean id="dataSource"class="org.logicalcobwebs.proxool.ProxoolDataSource"destroy-method="close">

      <propertyname="driver" value="oracle.jdbc.driver.OracleDriver"></property>

      <propertyname="driverUrl"    value="jdbc:oracle:thin:@168.9.202.49:1521:TEST"></property>

      <propertyname="user"       value="TEST"></property>

      <propertyname="password"   value="TEST"></property>

      <propertyname="alias"      value="proxool4JMJL"></property>

      <propertyname="jmx"     value="false"></property>

      <propertyname="trace"      value="true"></property>

      <propertyname="verbose"    value="false"></property>

      <propertyname="houseKeepingSleepTime" value="30000"></property>

      <propertyname="houseKeepingTestSql" value="SELECTCURRENT_DATE FROM DUAL"></property>

      <propertyname="testBeforeUse"        value="true"></property>

      <propertyname="testAfterUse"         value="true"></property>

      <propertyname="prototypeCount"       value="5"></property>

      <propertyname="maximumConnectionCount"value="400"></property>

      <propertyname="minimumConnectionCount"value="10"></property>

      <propertyname="statistics"       value="1m,15m,1d"></property>

      <propertyname="statisticsLogLevel"   value="ERROR"></property>

      <propertyname="maximumActiveTime"       value="600000"></property>

      <propertyname="simultaneousBuildThrottle" value="1600"></property>

   </bean>

Bonecp连接池配置:

<bean id="bonecpDataSource"class="com.jolbox.bonecp.BoneCPDataSource"destroy-method="close">

      <propertyname="driverClass" value=" oracle.jdbc.driver.OracleDriver " />

      <propertyname="jdbcUrl" value=" jdbc:oracle:thin:@168.9.202.49:1521:TEST" />

      <propertyname="username"    value="TEST"/>

      <propertyname="password"    value="TEST"/>

      <propertyname="idleConnectionTestPeriod"    value="60"/>

      <propertyname="idleMaxAge" value="240"/>

      <propertyname="maxConnectionsPerPartition" value="30"/>

      <propertyname="minConnectionsPerPartition" value="10"/>

      <propertyname="partitionCount"       value="3"/>

      <propertyname="acquireIncrement" value="5"/>

      <propertyname="statementsCacheSize" value="100"/>

      <propertyname="releaseHelperThreads" value="3"/>

   </bean>

在实际项目开发中一般喜欢把参数都放在配置文件中,便于修改和操作。

原文地址:https://www.cnblogs.com/chenrenshui/p/7673716.html