1. 程式人生 > >資料庫連線池-資料來源配置

資料庫連線池-資料來源配置

常用的c3p0,DBPC,Druid三大連線池

DBPC

<!-- 配置dbcp資料來源 -->
<bean id="dataSource2" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">
         <property name="driverClassName" value="${jdbc.driverClassName}"/>
         <property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> <!-- 池啟動時建立的連線數量 --> <property name="initialSize" value="5"/> <!-- 同一時間可以從池分配的最多連線數量。設定為0時表示無限制。 --> <property
name="maxActive" value="30"/> <!-- 池裡不會被釋放的最多空閒連線數量。設定為0時表示無限制。 --> <property name="maxIdle" value="20"/> <!-- 在不新建連線的條件下,池中保持空閒的最少連線數。 --> <property name="minIdle" value="3"/> <!-- 設定自動回收超時連線 --> <property name
="removeAbandoned" value="true" /> <!-- 自動回收超時時間(以秒數為單位) --> <property name="removeAbandonedTimeout" value="200"/> <!-- 設定在自動回收超時連線的時候列印連線的超時錯誤 --> <property name="logAbandoned" value="true"/> <!-- 等待超時以毫秒為單位,在丟擲異常之前,池等待連線被回收的最長時間(當沒有可用連線時)。設定為-1表示無限等待。 --> <property name="maxWait" value="100"/> </bean>

c3p0

<!-- 配置c3p0資料來源 -->
     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
         <property name="jdbcUrl" value="${jdbc.url}" />
         <property name="driverClass" value="${jdbc.driverClassName}" />
         <property name="user" value="${jdbc.username}" />
         <property name="password" value="${jdbc.password}" />
         <!--連線池中保留的最大連線數。Default: 15 -->
         <property name="maxPoolSize" value="100" />
         <!--連線池中保留的最小連線數。-->
         <property name="minPoolSize" value="1" />
         <!--初始化時獲取的連線數,取值應在minPoolSize與maxPoolSize之間。Default: 3 -->
         <property name="initialPoolSize" value="10" />
         <!--最大空閒時間,60秒內未使用則連線被丟棄。若為0則永不丟棄。Default: 0 -->
         <property name="maxIdleTime" value="30" />
         <!--當連線池中的連線耗盡的時候c3p0一次同時獲取的連線數。Default: 3 -->
         <property name="acquireIncrement" value="5" />
         <!--JDBC的標準引數,用以控制資料來源內載入的PreparedStatements數量。但由於預快取的statements
           屬於單個connection而不是整個連線池。所以設定這個引數需要考慮到多方面的因素。
           如果maxStatements與maxStatementsPerConnection均為0,則快取被關閉。Default: 0-->
         <property name="maxStatements" value="0" />
          
         <!--每60秒檢查所有連線池中的空閒連線。Default: 0 -->
         <property name="idleConnectionTestPeriod" value="60" />
          
         <!--定義在從資料庫獲取新連線失敗後重復嘗試的次數。Default: 30 -->
         <property name="acquireRetryAttempts" value="30" />
         
         <!--獲取連線失敗將會引起所有等待連線池來獲取連線的執行緒丟擲異常。但是資料來源仍有效
           保留,並在下次呼叫getConnection()的時候繼續嘗試獲取連線。如果設為true,那麼在嘗試
           獲取連線失敗後該資料來源將申明已斷開並永久關閉。Default: false-->
         <property name="breakAfterAcquireFailure" value="true" />
          
         <!--因效能消耗大請只在需要的時候使用它。如果設為true那麼在每個connection提交的
           時候都將校驗其有效性。建議使用idleConnectionTestPeriod或automaticTestTable
           等方法來提升連線測試的效能。Default: false -->
         <property name="testConnectionOnCheckout"  value="false" />        
     </bean>

Druid

<!-- 阿里 druid資料庫連線池 -->
     <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
         init-method="init" destroy-method="close">
         <!-- 基本屬性 url、user、password -->
         <property name="url" value="${db.mysql.url}" />
         <property name="username" value="${db.mysql.username}" />
         <property name="password" value="${db.mysql.password}" />
         <property name="driverClassName" value="${driverClassName}" />
 
         <!-- 配置初始化大小、最小、最大 -->
         <property name="initialSize" value="5" />
         <property name="minIdle" value="10" />
         <property name="maxActive" value="20" />
 
         <!-- 配置獲取連線等待超時的時間 -->
         <property name="maxWait" value="60000" />
 
         <!-- 配置間隔多久才進行一次檢測,檢測需要關閉的空閒連線,單位是毫秒 -->
         <property name="timeBetweenEvictionRunsMillis" value="60000" />
 
         <!-- 配置一個連線在池中最小生存的時間,單位是毫秒 -->
         <property name="minEvictableIdleTimeMillis" value="300000" />
         <property name="validationQuery" value="SELECT 'x'" />
         <property name="testWhileIdle" value="true" />
         <property name="testOnBorrow" value="false" />
         <property name="testOnReturn" value="false" />
 
         <!-- 開啟PSCache,並且指定每個連線上PSCache的大小 -->
         <property name="poolPreparedStatements" value="true" />
         <property name="maxPoolPreparedStatementPerConnectionSize" value="20" />
 
         <!-- 連線洩漏處理。Druid提供了RemoveAbandanded相關配置,用來關閉長時間不使用的連線(例如忘記關閉連線)。 -->
         <property name="removeAbandoned" value="true" />
         <!-- 1800秒,也就是30分鐘 -->
         <property name="removeAbandonedTimeout" value="1800" />
         <!-- 關閉abanded連線時輸出錯誤日誌 -->
         <property name="logAbandoned" value="true" />
 
         <!-- 配置監控統計攔截的filters, 監控統計:"stat",防SQL注入:"wall",組合使用: "stat,wall" -->
         <property name="filters" value="stat" />
     </bean>