連接池配置臨時筆記
<!-- 配置c3p0數據源 -->
<bean id="dataSource_c3p0" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass" value="${jdbc.driverClass}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<!--連接池中保留的最小連接數。 -->
<property name="minPoolSize" value="3"/>
<!--連接池中保留的最大連接數。Default: 15 -->
<property name="maxPoolSize" value="10"/>
<!--初始化時獲取的連接數,取值應在minPoolSize與maxPoolSize之間。Default: 3 -->
<property name="initialPoolSize" value="3"/>
<!--最大空閒時間,60秒內未使用則連接被丟棄。若爲0則永不丟棄。Default: 0 -->
<property name="maxIdleTime" value="60"/>
<!--當連接池中的連接耗盡的時候c3p0一次同時獲取的連接數。Default: 3 -->
<property name="acquireIncrement" value="3"/>
<!--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連接池 -->
<bean id="dataSource_druid" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<!-- 基本屬性 url、user、password 根據url自動識別dbType,不用配置driverClassName-->
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<!-- 配置初始化大小、最小空閒、最大連接數-->
<property name="initialSize" value="${druid.initialSize}" />
<property name="minIdle" value="${druid.minIdle}" />
<property name="maxActive" value="${druid.maxActive}" />
<!-- 配置獲取連接等待超時的時間 單位毫秒 -->
<property name="maxWait" value="60000" />
<!-- 配置間隔多久才進行一次檢測,檢測需要關閉的空閒連接,單位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000" />
<!-- 配置一個連接在池中最小生存的時間,單位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="300000" />
<!-- 檢測連接是否有效的sql,要求是一個查詢語句 -->
<property name="validationQuery" value="SELECT 'x'" />
<!-- 建議配置爲true,不影響性能,並且保證安全性。申請連接的時候檢測,如果空閒時間大於timeBetweenEvictionRunsMillis,執行validationQuery檢測連接是否有效。 -->
<property name="testWhileIdle" value="true" />
<property name="testOnBorrow" value="false" /> <!-- 申請連接時執行validationQuery檢測連接是否有效,不需要檢測-->
<property name="testOnReturn" value="false" /> <!-- 歸還連接時執行validationQuery檢測連接是否有效,不需要檢測-->
<!-- 打開PSCache,在mysql5.5以下的版本中沒有PSCache功能,建議關閉掉。5.5及以上版本有PSCache,建議開啓。 -->
<property name="poolPreparedStatements" value="true" />
<property name="maxPoolPreparedStatementPerConnectionSize" value="100" />
<!-- 配置監控統計攔截的filters,去掉後監控界面sql無法統計 -->
<property name="filters" value="stat" />
</bean>