zoukankan      html  css  js  c++  java
  • 连接池配置

    一般而言,常用的数据库连接池有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>

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

  • 相关阅读:
    原生态 php连接mysql
    sql查询慢 查找
    死锁查询和处理
    linq详细案例
    linq深入
    DataTable 与XML 交互
    DataTable运用
    通过反射修改已有数组的大小
    通过反射取得并修改数组信息
    通过反射机制直接操作属性
  • 原文地址:https://www.cnblogs.com/chenrenshui/p/7673716.html
Copyright © 2011-2022 走看看