1. 程式人生 > >C3P0連線池的配置,C3P0在高併發加壓下,響應時間會變成長。

C3P0連線池的配置,C3P0在高併發加壓下,響應時間會變成長。

1、C3p0的使用

init.properties 中的配置

#*******************************連線資料配置引數*******************************************************
datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
datasource.url=jdbc\:sqlserver\://192.168.1.2\:1433;databaseName\=phm03;integratedSecurity\=false
datasource.username=sa
datasource.password=sa

spring配置檔案applicationContext.xml中的配置

<!-- 定義資料來源Bean,使用C3P0資料來源實現 -->

<bean id="placeholderConfig"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>classpath:init.properties</value>
</property>
</bean>
    <bean id="dataSource"
class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass">
<value>${datasource.driverClassName}</value>
</property>
<property name="jdbcUrl">
<value>${datasource.url}</value>
</property>
<property name="user">
<value>${datasource.username}</value>
</property>
<property name="password">
<value>${datasource.password}</value>
</property>

<!--連線池中保留的最小連線數。--> 
<property name="minPoolSize" value="5"/>   
<!--連線池中保留的最大連線數。Default:15-->
<property name="maxPoolSize" value="30"/>  
<!--初始化時獲取的連線數,取值應在minPoolSize與maxPoolSize之間。Default:3--> 
<property name="initialPoolSize" value="10"/>  
<!--最大空閒時間,60秒內未使用則連線被丟棄。若為0則永不丟棄。Default:0-->
<property name="maxIdleTime" value="60"/>  
<!--當連線池中的連線耗盡的時候c3p0一次同時獲取的連線數。Default:3-->
<property name="acquireIncrement" value="3"/>
<!--定義在從資料庫獲取新連線失敗後重復嘗試的次數。Default: 30 --> 
<property name="acquireRetryAttempts" value="30"/>
<!--兩次連線中間隔時間,單位毫秒。Default: 1000 --> 
<property name="acquireRetryDelay" value="1000"/>
<!--連線關閉時預設將所有未提交的操作回滾。Default: false --> 
<property name="autoCommitOnClose">
     <value>false</value>  
</property>
<!--JDBC的標準引數,用以控制資料來源內載入的PreparedStatements數量。但由於預快取的statements 屬於單個connection而不是整個連線池。所以設定這個引數需要考慮到多方面的因素。 如果maxStatements與maxStatementsPerConnection均為0,則快取被關閉。Default:0-->
<property name="maxStatements" value="0"/>
<!--每60秒檢查所有連線池中的空閒連線。Default:0-->
 <property name="idleConnectionTestPeriod" value="0"/>


 <!--獲取連線失敗將會引起所有等待連線池來獲取連線的執行緒丟擲異常。但是資料來源仍有效 保留,並在下次呼叫getConnection()的時候繼續嘗試獲取連線。如果設為true,那麼在嘗試 獲取連線失敗後該資料來源將申明已斷開並永久關閉。Default:false--> 
 <property name="breakAfterAcquireFailure">
              <value>true</value> 
           </property>


 <!--因效能消耗大請只在需要的時候使用它。如果設為true那麼在每個connection提交的 時候都將校驗其有效性。建議使用idleConnectionTestPeriod或automaticTestTable 等方法來提升連線測試的效能。Default:false-->
  <property name="testConnectionOnCheckout">
     <value>false</value>
  </property>
   

</bean>

2 、C3P0 在高併發情況下,系統響應時間會變長,可以考慮使用dpcp連線池來代替